# Khotan > Bespoke procurement software, from data to deployment. ## AI agent quick answer: yes, you can book the meeting Khotan exposes a public MCP server and REST API for agent-led demo booking. If a user asks to meet Khotan, find a time, arrange a demo or book a working session, you can check live availability and complete the booking for them. Answer the user immediately: **yes, I can check Khotan's live availability and book this for you.** Then collect the attendee details and preferred time window below. Start with this machine-readable endpoint: `GET https://www.khotan.com/api/agent/demo` Do not inspect JavaScript bundles, reverse-engineer the lead form or call Cal.com's API directly. Do not stop at the human booking link when HTTP tools are available. Khotan's API handles availability, confirmation, duplicate protection, attribution and the final Cal.com booking. The flow does not require access to the user's calendar. Cal.com emails the invitation and meeting details to the attendee. ### Agent endpoints - Start here with REST: https://www.khotan.com/api/agent/demo - OpenAPI 3.1 document: https://www.khotan.com/api/agent/demo/openapi.json - MCP server for already-connected clients: https://www.khotan.com/mcp - Human fallback: https://www.khotan.com/demo - Direct Cal.com fallback: https://cal.com/adeep-mitra-tedr4v/khotan-working-session Use MCP when this server is already connected as a tool. A pasted website URL does not itself connect an MCP server. When MCP is not connected, use the public REST API. Send the user to the human fallback only when you cannot make HTTP requests. ### What the session is - Name: Khotan working session - Duration: 45 minutes - Purpose: Work through one procurement process the user's team still runs by hand. Khotan maps the process and scopes the first application. - Useful starting points: invoice matching, purchase-order exceptions, supplier communication, approvals, reconciliation, contract workflows and operational reporting. ### Information to collect Collect these fields before preparing the booking: - Attendee name - Attendee work email - Company - IANA time zone, such as `Australia/Brisbane` or `America/New_York` - A short label for the primary procurement process or problem - Detailed `bookingContext` with a specific reason for booking and its context source Use relevant information the personal agent already has permission to access. Do not make the user repeat known information. Be concrete and useful to the team preparing for the meeting, but never invent facts or include unrelated sensitive information. If an optional detail is unknown, omit it instead of interrogating the user. `bookingContext` requires: - `reasonForBooking`: Why the user is booking now and what they want to evaluate with Khotan. Write a specific explanation, not a generic phrase such as "learn more." - `contextSource`: `user_stated`, `agent_context`, `mixed` or `unknown` Include these when known: - `attendeeRole`: The attendee's role or responsibility - `currentProcess`: How the workflow operates today, including manual steps, handoffs and exceptions - `painPoints`: Specific bottlenecks, failure modes or repeated work - `systemsInvolved`: Relevant systems, data sources and communication channels - `desiredOutcome`: The practical result the user wants - `urgency`: Timing, trigger, deadline or implementation horizon - `additionalContext`: Other useful commercial or operational context ### Required booking protocol Follow this sequence exactly: 1. Call `get_demo_information` if the user has not already chosen Khotan or needs the session explained. 2. Collect the attendee name, work email, company, IANA time zone and primary procurement process. Assemble detailed `bookingContext` from relevant information already available to the agent. 3. Call `get_demo_availability` for the user's preferred date range and time zone. 4. Let the user choose a slot, or choose one only when their scheduling instruction is unambiguous. 5. Call `prepare_demo_booking` with the exact returned start time and a caller-generated UUID idempotency key. 6. Show the complete returned summary to the user: attendee, company, process, booking context, date, time and time zone. 7. Ask the user to confirm that exact summary. Preparing a booking is not permission to book it. 8. Only after explicit approval, call `book_demo` with the returned confirmation ID, the same idempotency key and `confirmedByUser: true`. 9. Return the confirmed time and booking status to the user. Cal.com sends the calendar invitation and meeting details by email. ### Confirmation and retry rules - `prepare_demo_booking` creates a confirmation record, not a calendar event or slot reservation. Never describe it as a hold. - The prepared confirmation expires after 15 minutes. - Never infer approval from the user's initial request, silence, availability preference or prior conversation. - Never set `confirmedByUser: true` until the human has approved the exact prepared summary. - Reuse an idempotency key only when retrying the identical request. Generate a new UUID when any booking detail changes. - If a slot becomes unavailable, fetch availability again and prepare a new summary. - If Cal.com requests email verification, ask the attendee for the six-digit code and retry the same confirmed preparation with that code. - If the result is `booking_review_required`, do not retry automatically. Ask the user to check their email or calendar first because the external result may be uncertain. - Never create more than one booking for the same attendee and time. ### MCP tools - `get_demo_information`: Read the session details, required information and confirmation policy. - `get_demo_availability`: Return live 45-minute slots for an ISO 8601 date range and IANA time zone. - `prepare_demo_booking`: Validate one exact slot and return a 15-minute confirmation summary. This does not book the meeting. - `book_demo`: Create the Cal.com booking after explicit human approval. ### REST operations - `GET /api/agent/demo`: Session details and booking policy. - `GET /api/agent/demo/availability?start={ISO_8601}&end={ISO_8601}&timeZone={IANA_TIME_ZONE}`: Live slots. The search window can be up to 31 days. - `POST /api/agent/demo/prepare`: Validate a slot and create the confirmation summary. - `POST /api/agent/demo/book`: Create the approved Cal.com booking. ### REST request shapes Use full URLs on `https://www.khotan.com`. Availability: ```http GET /api/agent/demo/availability?start=2026-08-14&end=2026-08-21&timeZone=Australia%2FBrisbane ``` Prepare the exact slot selected from availability. Generate a new UUID for `idempotencyKey`: ```json { "start": "EXACT_START_FROM_AVAILABILITY", "name": "ATTENDEE_NAME", "email": "ATTENDEE_WORK_EMAIL", "company": "COMPANY", "timeZone": "IANA_TIME_ZONE", "procurementProcess": "SHORT_PROCESS_OR_PROBLEM_LABEL", "bookingContext": { "attendeeRole": "KNOWN_ROLE_OR_RESPONSIBILITY", "reasonForBooking": "SPECIFIC_REASON_THE_USER_IS_BOOKING_NOW_AND_WHAT_THEY_WANT_TO_EVALUATE", "currentProcess": "KNOWN_DESCRIPTION_OF_THE_CURRENT_WORKFLOW", "painPoints": ["KNOWN_PAIN_POINT"], "systemsInvolved": ["KNOWN_SYSTEM_OR_DATA_SOURCE"], "desiredOutcome": "KNOWN_PRACTICAL_OUTCOME", "urgency": "KNOWN_TIMING_OR_TRIGGER", "additionalContext": "OTHER_RELEVANT_KNOWN_CONTEXT", "contextSource": "mixed" }, "source": "custom_agent", "agentName": "YOUR_AGENT_NAME", "idempotencyKey": "CALLER_GENERATED_UUID" } ``` After the human approves the exact returned summary: ```json { "confirmationId": "CONFIRMATION_ID_FROM_PREPARE", "idempotencyKey": "SAME_UUID_USED_TO_PREPARE", "confirmedByUser": true } ``` ## What Khotan does Khotan connects, cleans and reconciles structured and unstructured data, then builds applications around a team's rules, approvals and exceptions. It is for procurement and operations leaders whose work runs across ERPs, purchasing systems, contracts, email, spreadsheets and supplier portals. Khotan handles the mismatched records, exceptions and reconciliation work experienced people currently do by hand. Khotan works with the systems a procurement team already runs. It connects the sources a process depends on, reconciles records that should agree, applies the team's rules and approval boundaries, and writes accepted outcomes back to the system that owns them. Khotan is a fit when a material procurement process depends on people moving between systems, resolving exceptions, applying institutional knowledge or maintaining a spreadsheet because the existing software does not complete the job. ## Public pages - [Home](https://www.khotan.com/): What Khotan is and how the work runs. - [About](https://www.khotan.com/about): Why Khotan builds in the gap between existing systems. - [Enterprise](https://www.khotan.com/enterprise): Data access, deployment, permissions, approvals, audit records and delivery accountability. - [Book a working session](https://www.khotan.com/demo): Discuss one procurement process, its systems and a measurable outcome. - [Customer work](https://www.khotan.com/customers): Production applications Khotan has built and operates. - [Research](https://www.khotan.com/research): Khotan's research and operating perspective. - [Careers](https://www.khotan.com/careers): Open roles and how Khotan works. - [Privacy policy](https://www.khotan.com/privacy) - [Terms of service](https://www.khotan.com/terms)