{"name":"com.iconic-expeditions/concierge","slug":"iconic-expeditions-concierge","title":null,"description":"Search Africa safari destinations, generate day-by-day itineraries, and price expert travel work.","url":"https://mcp.market/server/iconic-expeditions-concierge","rating":null,"grade":"C","score":60,"certified":false,"status":"active","category":"search","tags":["search","maps"],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":20,"ok":20,"last_checked_at":"2026-09-24T06:21:02.205Z","last_ok_at":"2026-09-24T06:21:02.205Z","latency_ms":292},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/nyuchi/zti-app","website":"https://concierge.iconic-expeditions.com","version":"2.0.0","remotes":[{"type":"streamable-http","url":"https://concierge.iconic-expeditions.com/mcp"}],"packages":[],"tools":[{"name":"add_activity","description":"Add 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"itinerary_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Parent itinerary UUID"},"day_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"The day UUID to add the activity to"},"slot":{"type":"string","enum":["morning","afternoon","evening"]},"title":{"type":"string","minLength":1,"description":"Short title for the activity"},"description":{"type":"string"},"duration_minutes":{"type":"integer","minimum":5,"maximum":9007199254740991},"wp_content_type":{"description":"Content type to link","type":"string","enum":["itinerary","activity","destination","post"]},"wp_content_id":{"description":"Source content id","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["itinerary_id","day_id","slot","title"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"add_day","description":"Append an extra day to a concierge itinerary and increment num_days. Requires a bearer token.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"itinerary_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"description":"Optional day label, e.g. 'Drive to Hwange'","type":"string"},"notes":{"type":"string"}},"required":["itinerary_id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"create_itinerary","description":"Create 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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"description":"Itinerary title, e.g. '7-Day Hwange Safari'"},"num_days":{"type":"integer","minimum":1,"maximum":30,"description":"Number of days"},"description":{"description":"Optional short description","type":"string"},"start_date":{"description":"Optional ISO date string for day 1, e.g. '2025-06-01'","type":"string"}},"required":["title","num_days"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"delete_activity","description":"Remove an activity from a concierge itinerary day. Requires a bearer token.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"activity_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["activity_id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"delete_itinerary","description":"Permanently delete a concierge itinerary and all its days and activities. Requires a bearer token.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"itinerary_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["itinerary_id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"generate_itinerary_from_places","description":"Give 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"description":"Itinerary title, e.g. 'Highlights of Zimbabwe'"},"places":{"minItems":3,"type":"array","items":{"type":"string","minLength":1},"description":"At least 3 place names, e.g. ['Victoria Falls', 'Hwange', 'Mana Pools']"},"num_days":{"type":"integer","minimum":1,"maximum":30,"description":"Number of days for the trip"},"preferences":{"description":"Traveller preferences that should shape the plan: pace, interests, budget, travel style","type":"string"},"language":{"description":"Language for day titles, notes, and activity text: 'en' (English), 'ru' (Russian), or 'zh' (Chinese). Defaults to English.","type":"string","enum":["en","ru","zh"]}},"required":["title","places","num_days"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"get_content","description":"Fetch a single content item by type and id, walking the content chain (WordPress -> cache). Returns the item with its `source`.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"type":{"type":"string","enum":["itinerary","activity","destination","post"]},"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Source content id (WordPress post id)"}},"required":["type","id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"get_destination","description":"Get full details for a single destination by slug or id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"identifier":{"type":"string","description":"Either a destination id or its URL slug"}},"required":["identifier"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"get_itinerary","description":"Get 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"itinerary_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"The UUID of the itinerary"}},"required":["itinerary_id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"get_itinerary_dossier","description":"Read 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"itinerary_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["itinerary_id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"get_pricing","description":"List 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"get_wp_content","description":"Alias of get_content, kept for backwards compatibility. Prefer get_content.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"type":{"type":"string","enum":["itinerary","activity","destination","post"]},"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Source content id (WordPress post id)"}},"required":["type","id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"list_destinations","description":"List destinations from the database, optionally filtered by region or category.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"region":{"description":"Filter by region name, e.g. 'Matabeleland North'","type":"string"},"category":{"description":"Filter by category, e.g. 'National Park'","type":"string"},"limit":{"default":20,"type":"integer","minimum":1,"maximum":50}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"list_itineraries","description":"List itineraries created by the Iconic Expeditions concierge, most recent first. Requires a bearer token.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"price_itinerary","description":"Price 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"itinerary_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"tier_id":{"description":"Defaults to the cheapest tier","type":"string"},"option_ids":{"description":"One entry per cost option group you want to choose in","type":"array","items":{"type":"object","properties":{"group_id":{"type":"string"},"option_id":{"type":"string"}},"required":["group_id","option_id"]}},"nights":{"description":"Defaults to the cost model's reference length","type":"integer","minimum":1,"maximum":9007199254740991},"travellers":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["itinerary_id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"request_bookings","description":"Start a PAID booking service: verification PLUS we make all the bookings (lodges, transfers, activities, permits). Returns a Stripe checkout URL. Requires a bearer token.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"itinerary_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contact_email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"notes":{"type":"string"}},"required":["itinerary_id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"request_full_service","description":"Start 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"itinerary_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contact_email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"notes":{"type":"string"}},"required":["itinerary_id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"request_verification","description":"Start 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"itinerary_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contact_email":{"description":"Where to send the report + receipt","type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"notes":{"description":"Anything the experts should know (dates, group size, budget)","type":"string"}},"required":["itinerary_id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"search_content","description":"Search 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).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"type":{"type":"string","enum":["itinerary","activity","destination","post"],"description":"Content type to search"},"search":{"description":"Search keyword","type":"string"},"per_page":{"default":10,"type":"integer","minimum":1,"maximum":20}},"required":["type"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"search_wp_content","description":"Alias of search_content, kept for backwards compatibility. Prefer search_content.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"type":{"type":"string","enum":["itinerary","activity","destination","post"],"description":"Content type to search"},"search":{"description":"Search keyword","type":"string"},"per_page":{"default":10,"type":"integer","minimum":1,"maximum":20}},"required":["type"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"set_itinerary_dossier","description":"Write 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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"itinerary_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"countries":{"description":"How many countries the route crosses","type":"integer","minimum":1,"maximum":9007199254740991},"legs":{"description":"The route's chapters. Every day must belong to exactly one leg, and legs must not overlap.","minItems":1,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"description":"Where this stretch is, in a word or two"},"summary":{"description":"A sentence or two on what these nights are for","type":"string"},"start_day":{"type":"integer","minimum":1,"maximum":9007199254740991},"end_day":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["title","start_day","end_day"]}},"seasonality":{"description":"One row per thing the trip is timed around, scored 0-3 across all twelve months, plus a verdict per month worth arguing about","type":"object","properties":{"rows":{"minItems":1,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"description":"What is being scored — a wildlife event, a trail condition, a sea state"},"scores":{"minItems":12,"maxItems":12,"type":"array","items":{"type":"integer","minimum":0,"maximum":3},"description":"January first. 0 = avoid, 1 = poor, 2 = workable, 3 = peak"}},"required":["label","scores"]}},"months":{"minItems":1,"type":"array","items":{"type":"object","properties":{"month":{"type":"integer","minimum":1,"maximum":12},"rank":{"type":"string","enum":["primary","alternative","workable","avoid"]},"verdict":{"type":"string","minLength":1,"description":"Why this month is or isn't the one, in two or three sentences"},"tags":{"maxItems":4,"type":"array","items":{"type":"string"},"description":"Short labels: 'Peak crossings', 'Books out first', 'Avoid'"}},"required":["month","rank","verdict","tags"]}},"recommended_month":{"type":"integer","minimum":1,"maximum":12,"description":"The month this plan is actually built around"}},"required":["rows","months","recommended_month"]},"cost_model":{"description":"Per-person breakdown lines, amounts per comfort tier, and any per-line choices","type":"object","properties":{"currency":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217, lowercase — 'usd'"},"reference_nights":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"The trip length the amounts are quoted at"},"length_options":{"description":"Shorter or longer variants offered to the reader, in nights","type":"array","items":{"type":"integer","minimum":1,"maximum":9007199254740991}},"lines":{"minItems":1,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Short stable key used by tiers and option groups — 'land', 'permits', 'park_fees', 'flights'"},"label":{"type":"string","minLength":1},"scales_with_length":{"type":"boolean","description":"True for nightly costs (camps, park fees), false for per-trip costs (permits, internal flights)"}},"required":["key","label","scales_with_length"]}},"tiers":{"minItems":1,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"description":"'Lean', 'Mid-range', 'Luxury'"},"amounts":{"minItems":1,"type":"array","items":{"type":"object","properties":{"line_key":{"type":"string"},"amount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Per person, in minor units — 620000 for $6,200"}},"required":["line_key","amount"]},"description":"One entry per cost line"}},"required":["label","amounts"]}},"option_groups":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1},"line_key":{"type":"string","minLength":1,"description":"Which cost line this choice overrides"},"options":{"minItems":2,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1},"amount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Per person, in minor units — 620000 for $6,200"},"is_default":{"type":"boolean"}},"required":["label","amount"]}}},"required":["label","line_key","options"]}},"notes":{"description":"What the figures exclude and how firm they are","type":"string"}},"required":["currency","reference_nights","lines","tiers"]},"booking_order":{"description":"What to book, in the order it has to happen","minItems":1,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1},"detail":{"type":"string","minLength":1,"description":"Why it sits at this point in the order"}},"required":["title","detail"]}},"field_notes":{"description":"Visas, certificates, luggage limits, kit","minItems":1,"type":"array","items":{"type":"object","properties":{"heading":{"type":"string","minLength":1,"description":"'Visas', 'Yellow fever', 'Luggage'"},"body":{"type":"string","minLength":1}},"required":["heading","body"]}},"choices":{"description":"Either/ors deliberately left open for the traveller","minItems":1,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"description":"'Pick your coast'"},"options":{"minItems":2,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1},"subtitle":{"type":"string"},"body":{"type":"string","minLength":1,"description":"What this option is actually like, and who should choose it"}},"required":["label","body"]}}},"required":["title","options"]}}},"required":["itinerary_id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"update_itinerary","description":"Update metadata (title, description, dates, public status) on a concierge itinerary. Requires a bearer token.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"itinerary_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"description":{"type":"string"},"start_date":{"type":"string"},"is_public":{"description":"Set false to unpublish the shareable link","type":"boolean"}},"required":["itinerary_id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"write_itinerary_day_detail","description":"Write 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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"itinerary_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"day_number":{"type":"integer","minimum":1,"maximum":9007199254740991},"narrative":{"type":"string","minLength":1,"description":"Two or three short paragraphs, separated by blank lines. Plain text, no markup."},"callouts":{"maxItems":3,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["alternative","swap","warning","note"]},"title":{"type":"string","minLength":1,"description":"'Alternative', 'Swap worth considering'"},"body":{"type":"string","minLength":1}},"required":["kind","title","body"]}}},"required":["itinerary_id","day_number","narrative"],"$schema":"https://json-schema.org/draft/2020-12/schema"}}],"scan":{"score":60,"grade":"C","scanned_at":"2026-09-22T21:30:01.387Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-22T21:30:01.372Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 685ms"]},"poisoning":{"score":15,"max":15,"notes":["23 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 6 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://concierge.iconic-expeditions.com/mcp","reachable":true,"authRequired":false,"latencyMs":685,"serverInfo":{"name":"iconic-concierge","version":"2.0.0"}}],"packages":[],"repo":{"found":false,"owner":"nyuchi","repo":"zti-app","error":"repo not found"},"icon":{"url":"https://concierge.iconic-expeditions.com/icon.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}