Skip to main content
Glama

Server Details

Search and book real photographers on Kadro (Iran) on a user's behalf, ending with a payment link.

Ownership verified
Status
Healthy
Uptime
97.9% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
amvaleh/kadro-mcp-server
GitHub Stars
0
Server Listing
Kadro MCP server

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool maps to a single, distinct step in the booking flow: search shoot types, search photographers, list packages, create reservation, get payment link, and check status. There is no meaningful overlap between tools, and the workflow dependencies make selection unambiguous.

Naming Consistency5/5

All tool names follow a consistent lowercase snake_case verb_noun pattern: search_, get_, and create_. The verbs accurately describe the action and the nouns identify the target, making the API predictable.

Tool Count5/5

Six tools is well-scoped for a booking-focused MCP server. Each tool earns its place in the user journey from discovery to payment and status checking, with no redundant or extraneous surface area.

Completeness4/5

The core booking lifecycle is fully covered: discover, select, reserve, pay, and check status. The only minor gaps are post-booking operations like cancellation or rescheduling, but these are likely outside the intended agent scope.

Available Tools

6 tools
create_reservationCreate a guest photographer reservationAInspect

Book a specific photographer for a specific package, date/time, and address on the user's behalf — no login required. This only places a 15-minute hold; it does NOT charge any money and does NOT require or accept any payment information. Immediately follow this with get_payment_link and give that URL to the human — they open it themselves to verify their phone number and pay. start_time must be an ISO 8601 timestamp at least 6 hours in the future. Pass a stable idempotency_key if you might retry this call, so a retry can't create a second reservation.

ParametersJSON Schema
NameRequiredDescriptionDefault
city_idYes
package_idYes
start_timeYesISO 8601 timestamp, at least 6 hours from now.
shoot_detailNoFree-text notes about the shoot for the photographer.
shoot_type_idYes
address_detailYesHuman-readable address text for the shoot location.
idempotency_keyNoA key you generate to make retries safe. Reuse it only when retrying the exact same request.
address_latitudeYes
photographer_uidYes
address_longitudeYes
guest_display_nameNoThe customer's name, if known.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already signal mutation (readOnlyHint=false) and non-idempotency, but the description adds critical behavioral details beyond those: it places a 15-minute hold, charges nothing, requires no payment info, and mandates a follow-up payment step. It also discloses the authentication requirement (no login) and the idempotency safeguard. No contradiction with annotations.

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?

Three sentences, each carrying essential information: the core action and scope, the non-charging hold behavior and required follow-up, and the key constraints. Front-loaded with the purpose, then critical caveats. No fluff or redundancy.

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 tool with 11 parameters and no output schema, the description covers the critical flow, constraints, and next steps. It does not explain what the ID parameters refer to, but sibling tools (search_shoot_types, get_photographer_packages, search_photographers) clearly supply them, so an agent can infer the workflow. The return value is not described, but that is a minor gap given no output schema exists.

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 45%, covering start_time, idempotency_key, address_detail, shoot_detail, and guest_display_name. The description reinforces start_time's 6-hour constraint and idempotency_key's purpose, which are already in the schema, so it adds little new meaning. The many un-described IDs (city_id, package_id, shoot_type_id, photographer_uid) are not explained in the description, though their purpose is inferable from sibling tool names. The description does not compensate for the missing 55% of schema parameter descriptions.

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?

The description clearly states the action: 'Book a specific photographer for a specific package, date/time, and address on the user's behalf.' It uses a specific verb and resource, and distinguishes itself from sibling tools by being the only creation tool. The mention of the immediate next step (get_payment_link) further clarifies its role in the workflow.

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

Usage Guidelines5/5

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

The description provides explicit usage context: it's the tool to create a reservation, it requires no login, and it explicitly instructs to follow with get_payment_link. It also sets constraints (start_time at least 6 hours out, use idempotency_key for retries) which are actionable conditions. It does not list when-not-to-use alternatives, but the flow is so specific that an agent knows when to invoke it.

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

get_photographer_packagesGet a photographer's packages and pricesA
Read-onlyIdempotent
Inspect

List the real, currently bookable packages (with prices, in Toman) a specific photographer offers for a given shoot_type_id. Rejects the shoot_type_id if that photographer doesn't actually offer it. Use the returned package id with create_reservation.

ParametersJSON Schema
NameRequiredDescriptionDefault
shoot_type_idYes
photographer_uidYesA photographer uid from search_photographers.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral detail beyond annotations: it emphasizes that packages are 'real, currently bookable' and that an invalid shoot_type_id is rejected for that photographer. This gives an agent a sense of validation behavior and real-world availability.

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?

Two sentences, front-loaded with the core action and resource, then the key behavioral note and a practical next step. No filler or repeated schema content. Every sentence earns its place.

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 simple two-parameter read-only tool with no output schema, the description conveys what is returned (packages with prices in Toman), how invalid input behaves, and how to use the result. It could mention where to obtain a valid shoot_type_id or describe the package output shape more fully, but it is adequate for an agent to invoke correctly.

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 only 50%, so the description must compensate. It clarifies that shoot_type_id filters packages and that photographer_uid identifies the photographer, but it does not say where shoot_type_id comes from or add much detail beyond the schema. It does mention the returned package id, which is useful for follow-up, but the parameter-level guidance remains incomplete.

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?

The description uses a specific verb ('List') and clearly names the resource: currently bookable packages with prices in Toman for a specific photographer and shoot_type_id. It also distinguishes the tool from siblings like create_reservation by framing it as a read-only lookup that returns package ids for later use.

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?

The description clearly indicates when to use this tool: when you need a photographer's bookable packages for a shoot type. It also gives a concrete next step ('Use the returned package id with create_reservation'), which helps an agent chain the call correctly. It does not explicitly state alternatives or exclusion cases, but the sibling set and read-only framing make the intended usage clear.

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

get_reservation_statusCheck a reservation's statusA
Read-onlyIdempotent
Inspect

Check whether a reservation has been paid and confirmed. IMPORTANT: status values are 'awaiting_payment', 'expired', 'paid_awaiting_photographer_confirmation', 'confirmed', and 'rejected'. 'paid_awaiting_photographer_confirmation' means the customer paid but the photographer has not yet accepted the booking and could still decline or ask to reschedule — do not tell the user their booking is final until status is exactly 'confirmed'.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe slug returned by create_reservation.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, and the description goes further by defining each status value and warning that only 'confirmed' means the booking is final. This is exactly the behavioral nuance an agent needs to avoid misleading a user.

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?

Front-loaded with the core purpose, then uses an 'IMPORTANT' section to convey the critical status interpretation. Every sentence carries essential information and no filler is present.

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

Completeness5/5

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

For a single-parameter read-only lookup with no output schema, the description provides the full status vocabulary and the practical consequence of each status. This is sufficient for an agent to invoke the tool and interpret its result correctly.

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 100% for the single 'slug' parameter, and the schema already explains that it is the slug returned by create_reservation. The description adds no parameter-specific detail, so the baseline score of 3 is appropriate.

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?

States a specific verb ('check'), resource ('reservation'), and intended question ('whether paid and confirmed'), and enumerates the exact status values. This clearly differentiates it from the create and payment-link siblings.

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?

The opening sentence gives clear context for when to use the tool: after creating a reservation, to check payment and confirmation state. It does not explicitly name alternatives or exclusions, but the purpose is unambiguous enough that an agent can select it correctly.

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

search_photographersSearch Kadro photographersA
Read-onlyIdempotent
Inspect

Find real, bookable photographers for a given shoot_type_id (from search_shoot_types), optionally narrowed to a city_id. Returns each photographer's uid (needed for every later call), display name, rating, review count, and city.

ParametersJSON Schema
NameRequiredDescriptionDefault
city_idNoOptional Kadro city id to narrow the search.
shoot_type_idYesA shoot_type_id from search_shoot_types.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds useful context beyond the annotations: photographers are 'real, bookable,' and the returned uid is required for downstream calls. No contradiction with annotations exists.

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?

The description is two sentences with no filler: the first sentence fronts the purpose and filters, the second delivers the return contract and workflow dependency. Every phrase earns its place.

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

Completeness5/5

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

Since there is no output schema, the description correctly explains the return format, including uid, display name, rating, review count, and city. It also covers the input prerequisite and downstream dependency on uid, making it complete for an agent to select and invoke the tool.

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 100% and both parameters already have clear descriptions. The description restates the same parameter concepts ('from search_shoot_types', 'optionally narrowed to a city_id') without adding new parameter-level detail, so the baseline of 3 applies.

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?

The description opens with a specific verb and resource: 'Find real, bookable photographers for a given shoot_type_id.' It also states the optional city filter and the returned identity fields, which clearly distinguish it from search_shoot_types and get_photographer_packages.

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?

The phrase 'from search_shoot_types' establishes the prerequisite input source, and 'uid (needed for every later call)' places this tool early in the workflow. It gives clear context for when to use it, though it does not explicitly name alternative tools or list when-not-to-use scenarios.

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

search_shoot_typesSearch Kadro shoot typesA
Read-onlyIdempotent
Inspect

List the photography/videography service types Kadro offers (e.g. wedding, industrial, portrait), each with a numeric shoot_type_id. Call this first if you don't already know the id for the kind of shoot the user wants.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful context beyond the schema by stating the returned items carry a numeric shoot_type_id, and frames the call as a prerequisite lookup rather than a mutation.

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?

Two sentences, with the main action and resource in the first sentence and a usage directive in the second. No filler or redundant restatement of the title.

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

Completeness5/5

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

For a zero-parameter, read-only lookup with complete annotations, the description provides enough information to invoke it correctly: what it returns, in what form, and when to call it. No output schema is required because the return contract is clearly stated.

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

Parameters4/5

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

The schema declares zero parameters, so there is nothing to document and the baseline of 4 applies. Any possible ambiguity is reduced by the description clarifying that the relevant identifier is shoot_type_id.

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?

The description opens with the concrete verb 'List' followed by a specific resource ('photography/videography service types Kadro offers'), with examples and the key output field. It is unambiguous what the tool does and it can be distinguished from the other search/lookup siblings.

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?

It gives an explicit condition and ordering: call first when the shoot_type_id is unknown. It does not explicitly name sibling alternatives or state when not to use it, so it falls just short of a top score.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • First observedcreate_reservation
    • First observedget_payment_link
    • First observedget_photographer_packages
    • First observedget_reservation_status
    • First observedsearch_photographers
    • First observedsearch_shoot_types

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to compare and find the cheapest domestic and international flights, hotels, villas, trains and buses in Iran, with exact Toman prices, fare and cancellation rules, baggage details, seats left and hotel reviews. Also covers CIP lounges, eSIM plans, visas and tours, and is read-only, so it never books, holds seats or pays.
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to search a catalog of roughly 960,000 fashion products across about 10,000 Iranian online and Instagram shops, comparing prices and discounts, checking per-color and per-size stock, browsing categories and curated listings, and finding similar items at other shops. It also lets agents assess shop trust signals such as ratings and buyer surveys, surface flash sales and discount codes, and read blog style guides, all read-only with no login or ordering.
    14
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables searching and comparing product prices, sellers, and price history from Torob, Iran's price-comparison engine, including shop trust signals and physical store availability.
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.