Search / io.github.amvaleh/kadro-mcp-server
kadro-mcp-server
R0· no sign-inSearch and book real photographers on Kadro (Iran) on a user's behalf, ending with a payment link.
v1.0.1 · active · repository · website · descriptor JSON · versions
Search / io.github.amvaleh/kadro-mcp-server
R0· no sign-inSearch and book real photographers on Kadro (Iran) on a user's behalf, ending with a payment link.
v1.0.1 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"kadro-mcp-server": {
"type": "http",
"url": "https://www.shootempire.com/kadro-mcp-relay/mcp"
}
}
}claude mcp add --transport http kadro-mcp-server https://www.shootempire.com/kadro-mcp-relay/mcp[mcp_servers.kadro-mcp-server]
url = "https://www.shootempire.com/kadro-mcp-relay/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"kadro-mcp-server": {
"type": "remote",
"url": "https://www.shootempire.com/kadro-mcp-relay/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"kadro-mcp-server": {
"type": "http",
"url": "https://www.shootempire.com/kadro-mcp-relay/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=kadro-mcp-server&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vd3d3LnNob290ZW1waXJlLmNvbS9rYWRyby1tY3AtcmVsYXkvbWNwIn0%3D"
}{
"servers": {
"kadro-mcp-server": {
"type": "http",
"url": "https://www.shootempire.com/kadro-mcp-relay/mcp"
}
}
}{
"mcpServers": {
"kadro-mcp-server": {
"httpUrl": "https://www.shootempire.com/kadro-mcp-relay/mcp"
}
}
}extensions:
"kadro-mcp-server":
enabled: true
name: "kadro-mcp-server"
type: streamable_http
uri: "https://www.shootempire.com/kadro-mcp-relay/mcp"
timeout: 300
protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotations6 of 6 tools declare readOnlyHint or destructiveHinttools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHinttools.token_costabout 1,246 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes12 tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageget_reservation_statusaddedCheck 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'.
get_payment_linkaddedGet a URL for the human to open in their own browser to finish this reservation: verify their phone number by SMS code and pay. This is the last step this server ever takes — never ask the user for a card number, OTP code, or password, and never try to open, submit, or complete this URL yourself. Just hand the URL to the user.
create_reservationaddedBook 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.
get_photographer_packagesaddedList 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.
search_photographersaddedFind 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.
search_shoot_typesaddedList 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.
get_reservation_statusremovedCheck 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'.
get_payment_linkremovedGet a URL for the human to open in their own browser to finish this reservation: verify their phone number by SMS code and pay. This is the last step this server ever takes — never ask the user for a card number, OTP code, or password, and never try to open, submit, or complete this URL yourself. Just hand the URL to the user.
create_reservationremovedBook 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.
get_photographer_packagesremovedList 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.
Showing the latest 10. Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +website +reachable +uptime-98% +updated-24d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://www.shootempire.com/kadro-mcp-relay/mcp streamable-http | none | yes | 98% | 621 ms | 2025-11-25 | 2026-10-20 |
create_reservation | 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. |
get_payment_linkread-only | Get a URL for the human to open in their own browser to finish this reservation: verify their phone number by SMS code and pay. This is the last step this server ever takes — never ask the user for a card number, OTP code, or password, and never try to open, submit, or complete this URL yourself. Just hand the URL to the user. |
get_photographer_packagesread-only | 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. |
get_reservation_statusread-only | 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'. |
search_photographersread-only | 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. |
search_shoot_typesread-only | 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. |
Schemas: list_tools.
{
"name": "io.github.amvaleh/kadro-mcp-server",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://www.shootempire.com/kadro-mcp-relay/mcp",
"type": "streamable-http"
}
],
"version": "1.0.1",
"repository": {
"url": "https://github.com/amvaleh/kadro-mcp-server",
"source": "github"
},
"websiteUrl": "https://www.kadro.co",
"description": "Search and book real photographers on Kadro (Iran) on a user's behalf, ending with a payment link."
}