Skip to main content
Glama
ponisha-mcp

ponisha-mcp

by Kia-Karami

ponisha_search_projects

Read-only

Search Ponisha freelance projects by query, skills, categories, or budget and hide listings where the employer already hired a freelancer.

Instructions

Search Ponisha projects (public, no login needed). Returns id, title, description, budget (Toman), skills, bid count and deadlines. Use skill slugs from ponisha_list_skills (e.g. 'python', 'react'). Ponisha keeps a project marked open even after the employer has chosen a freelancer, so by default each result is checked and those projects are hidden (hide_taken). Each result has already_hired: true, false or null (couldn't check). Never bid on a project with already_hired true.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "ponisha_search_projects"
  }
}

Input Schema

NameRequiredDescriptionDefault
pageNo
sortNoapproved_at
orderNodesc
queryNoFree-text search (Persian or English)
skillsNoSkill slugs, e.g. ['python','django']
per_pageNo
open_onlyNoOnly projects still accepting bids
categoriesNoCategory ids
hide_takenNoHide projects where the employer already chose a freelancer (they still show as open on Ponisha)
full_descriptionNoIf false, descriptions are trimmed to 600 chars

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.0

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint, but the description discloses a non-obvious platform quirk: Ponisha leaves projects marked open after the employer hires, so results are post-filtered and taken projects are hidden by default via hide_taken. It also explains the tri-state already_hired field including the null-means-couldn't-check case, which is exactly the kind of behavioral context an agent cannot infer from structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five front-loaded sentences: purpose and return shape first, then skill-slug sourcing, then the already_hired caveat with the default-hiding rule. No filler, and the safety-critical 'never bid' warning lands at the end where it is most salient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, no-output-schema search tool, the description does the heavy lifting: it lists the return fields so the agent knows what comes back and explains the already_hired post-filter cost. It stops short of pagination mechanics (page/per_page limits) and sort/order semantics, which an agent tuning result sets would still need to discover from the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60%, and the description reinforces skills slug sourcing and the hide_taken mechanism — but hide_taken's meaning is already stated verbatim in the schema description, so the added value is marginal. Sort/order enum values, page, per_page (max 50) and categories remain unexplained in the prose, leaving real gaps at this coverage level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Search Ponisha projects'), states the access model (public, no login needed), and enumerates the returned fields (id, title, description, budget in Toman, skills, bid count, deadlines). This cleanly separates it from ponisha_get_project (single-project detail) and ponisha_search_freelancers (different resource).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operating guidance: use skill slugs sourced from ponisha_list_skills with examples ('python', 'react'), and a hard exclusion rule ('Never bid on a project with already_hired true'). It does not explicitly say when to prefer ponisha_get_project for details or how this relates to ponisha_my_bids, so the alternative-routing is only partially covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.