com.iconic-expeditions/concierge
Measured conclusion: Alive, not deep-tested. L2 outcome: not_attempted.
Search Africa safari destinations, generate day-by-day itineraries, and price expert travel work.
| Author | com.iconic-expeditions |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Alive, not deep-tested |
| L1 liveness | alive |
| L1 latency | 252 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"concierge": {
"url": "https://concierge.iconic-expeditions.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (23)
search_contentSearch Iconic Expeditions content across itineraries, activities, destinations, and posts. Flows through the content chain (WordPress -> local cache -> AI fallback), so gaps WordPress doesn't cover are filled with clearly-labeled AI-synthesized results. Each item includes a `source` field (wordpress | cache | ai).
Parameters:
type(required) — string — Content type to searchsearch— string — Search keywordper_page— integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
search_wp_contentAlias of search_content, kept for backwards compatibility. Prefer search_content.
Parameters:
type(required) — string — Content type to searchsearch— string — Search keywordper_page— integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_contentFetch a single content item by type and id, walking the content chain (WordPress -> cache). Returns the item with its `source`.
Parameters:
type(required) — stringid(required) — integer — Source content id (WordPress post id)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_wp_contentAlias of get_content, kept for backwards compatibility. Prefer get_content.
Parameters:
type(required) — stringid(required) — integer — Source content id (WordPress post id)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_destinationsList destinations from the database, optionally filtered by region or category.
Parameters:
limit— integerregion— string — Filter by region name, e.g. 'Matabeleland North'category— string — Filter by category, e.g. 'National Park'
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_destinationGet full details for a single destination by slug or id.
Parameters:
identifier(required) — string — Either a destination id or its URL slug
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_itineraryGet a full itinerary with all days and activities, sorted by day number and time slot. Public itineraries are readable without a token; private ones require the owning token.
Parameters:
itinerary_id(required) — string — The UUID of the itinerary
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_itinerariesList itineraries created by the Iconic Expeditions concierge, most recent first. Requires a bearer token.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_itineraryCreate a new (empty) itinerary attributed to the Iconic Expeditions concierge, made public and returned with its share link. Days are created automatically. Requires a bearer token.
Parameters:
title(required) — string — Itinerary title, e.g. '7-Day Hwange Safari'num_days(required) — integer — Number of daysstart_date— string — Optional ISO date string for day 1, e.g. '2025-06-01'description— string — Optional short description
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
generate_itinerary_from_placesGive at least 3 places plus optional traveller preferences and let the AI concierge build a full, bespoke day-by-day itinerary. It mines Iconic Expeditions content for real detail and synthesizes an ORIGINAL plan tailored to the guest (never a copy of a published itinerary). Attributed to the Iconic Expeditions account and made public. Returns immediately with the itinerary id + share link; poll get_itinerary for progress (generation_status: pending -> building -> complete). Requires a bearer token.
Parameters:
title(required) — string — Itinerary title, e.g. 'Highlights of Zimbabwe'places(required) — array — At least 3 place names, e.g. ['Victoria Falls', 'Hwange', 'Mana Pools']num_days(required) — integer — Number of days for the triplanguage— string — Language for day titles, notes, and activity text: 'en' (English), 'ru' (Russian), or 'zh' (Chinese). Defaults to English.preferences— string — Traveller preferences that should shape the plan: pace, interests, budget, travel style
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
update_itineraryUpdate metadata (title, description, dates, public status) on a concierge itinerary. Requires a bearer token.
Parameters:
itinerary_id(required) — stringtitle— stringis_public— boolean — Set false to unpublish the shareable linkstart_date— stringdescription— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
delete_itineraryPermanently delete a concierge itinerary and all its days and activities. Requires a bearer token.
Parameters:
itinerary_id(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
add_dayAppend an extra day to a concierge itinerary and increment num_days. Requires a bearer token.
Parameters:
itinerary_id(required) — stringnotes— stringtitle— string — Optional day label, e.g. 'Drive to Hwange'
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_itinerary_dossierRead an itinerary's planning dossier: its legs, month-by-month seasonality, cost model, booking order, field notes and open choices. Public — no token needed. Returns nulls for blocks the itinerary doesn't have; older itineraries have none of them.
Parameters:
itinerary_id(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
price_itineraryPrice an itinerary's cost model against a selection: a comfort tier, any per-line choices, a trip length and a traveller count. Returns the per-person line breakdown and the group total. Public — no token needed. Amounts are in minor units. Call get_itinerary_dossier first for the tier and option ids.
Parameters:
itinerary_id(required) — stringnights— integer — Defaults to the cost model's reference lengthtier_id— string — Defaults to the cheapest tieroption_ids— array — One entry per cost option group you want to choose intravellers— integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
set_itinerary_dossierWrite the planning layer above an itinerary's day-by-day. Every block is optional — send only the ones you mean to write. Each block you DO send REPLACES that block entirely, so restate it in full: a partial legs list silently deletes the rest of the legs. Requires a bearer token.
Parameters:
itinerary_id(required) — stringlegs— array — The route's chapters. Every day must belong to exactly one leg, and legs must not overlap.choices— array — Either/ors deliberately left open for the travellercountries— integer — How many countries the route crossescost_model— object — Per-person breakdown lines, amounts per comfort tier, and any per-line choicesfield_notes— array — Visas, certificates, luggage limits, kitseasonality— object — One row per thing the trip is timed around, scored 0-3 across all twelve months, plus a verdict per month worth arguing aboutbooking_order— array — What to book, in the order it has to happen
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
write_itinerary_day_detailWrite one day out at length — why it is shaped this way, what its timing depends on, what the alternatives cost — plus up to three callouts. Replaces that day's existing narrative and callouts. Requires a bearer token.
Parameters:
itinerary_id(required) — stringday_number(required) — integernarrative(required) — string — Two or three short paragraphs, separated by blank lines. Plain text, no markup.callouts— array
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
add_activityAdd an activity to a specific day and time slot (morning/afternoon/evening). Optionally link to a content item using its type and id. Requires a bearer token.
Parameters:
itinerary_id(required) — string — Parent itinerary UUIDday_id(required) — string — The day UUID to add the activity toslot(required) — stringtitle(required) — string — Short title for the activitydescription— stringwp_content_id— integer — Source content idwp_content_type— string — Content type to linkduration_minutes— integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
delete_activityRemove an activity from a concierge itinerary day. Requires a bearer token.
Parameters:
activity_id(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_pricingList the paid concierge service tiers and their prices: itinerary verification, verification + full booking, and full guided service. Read-only and public — use this to quote a traveller before they buy.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
request_verificationStart a PAID itinerary verification. Our travel experts manually confirm availability, seasonality, routing and current lodge rates, then return a feasibility report and final price. Returns a Stripe checkout URL. Requires a bearer token.
Parameters:
itinerary_id(required) — stringnotes— string — Anything the experts should know (dates, group size, budget)contact_email— string — Where to send the report + receipt
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
request_bookingsStart a PAID booking service: verification PLUS we make all the bookings (lodges, transfers, activities, permits). Returns a Stripe checkout URL. Requires a bearer token.
Parameters:
itinerary_id(required) — stringnotes— stringcontact_email— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
request_full_serviceStart a PAID full-service, fully-guided expedition with Iconic Expeditions guides. This $500 is a deposit; the final custom price is quoted by an expert afterward based on the itinerary. Returns a Stripe checkout URL. Requires a bearer token.
Parameters:
itinerary_id(required) — stringnotes— stringcontact_email— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.