inference example: update aigw for elasticon sg#101
Merged
anuraaga merged 4 commits intoelastic:mainfrom Mar 16, 2026
Merged
Conversation
Signed-off-by: Adrian Cole <adrian@tetrate.io>
anuraaga
approved these changes
Mar 11, 2026
Co-authored-by: Anuraag (Rag) Agrawal <anuraaga@gmail.com>
| ) | ||
|
|
||
| next_week = (datetime.now() + timedelta(weeks=1)).strftime("%Y-%m-%d") | ||
| # Small models can't convert between date formats that may be required by tools so this format needs to be precise |
Contributor
Author
There was a problem hiding this comment.
fyi it was probably wrong to ever do YYY-MM-DD but anyway, since I looked up here it is. I think I just wasn't thinking when originally wrote this, and probably should have looked. but indeed LLMs should be able to figure this out!
$ npx @modelcontextprotocol/inspector --cli https://mcp.kiwi.com --transport http --method tools/list
{
"tools": [
{
"name": "search-flight",
"description": "\n# Search for a flight\n\n## Description\n\nUses the Kiwi API to search for available flights between two locations on a specific date.\n\n## How it works\n\nThe tool will:\n1. Search for matching locations to resolve airport codes\n2. Find available flights for the specified route and date range\n\n## Method\n\nCall this tool whenever a user wants to search for flights, regardless of whether they provided exact airport codes or just city names.\n\nYou should display the returned results in a markdown table format: Group the results by price (those who are the cheapest), duration (those who are the shortest, i.e. have the smallest 'totalDurationInSeconds') and the rest (those that could still be interesting).\n\nAlways display for each flight in order:\n - In the 1st column: The departure and arrival airports, including layovers (e.g. \"Paris CDG → Barcelona BCN → Lisbon LIS\")\n - In the 2nd column: The departure and arrival dates & times in the local timezones, and duration of the flight (e.g. \"03/08 06:05 → 09:30 (3h 25m)\", use 'durationInSeconds' to display the duration and not 'totalDurationInSeconds')\n - In the 3rd column: The cabin class (e.g. \"Economy\")\n - (In case of return flight only) In the 4th column: The return flight departure and arrival airports, including layovers (e.g. \"Paris CDG → Barcelona BCN → Lisbon LIS\")\n - (In case of return flight only) In the 5th column: The return flight departure and arrival dates & times in the local timezones, and duration of the flight (e.g. \"03/08 06:05 → 09:30 (3h 25m)\", use 'return.durationInSeconds' to display the duration)\n - (In case of return flight only) In the 6th column: The return flight cabin class (e.g. \"Economy\")\n - In the previous-to-last column: The total price of the flight\n - In the last column: The deep link to book the flight\n\nFinally, provide a summary highlighting the best prices, the shortest flights and a recommendation. End wishing a nice trip to the user with a short fun fact about the destination!\n",
"inputSchema": {
"type": "object",
"properties": {
"flyFrom": {
"type": "string",
"minLength": 1,
"description": "Location to fly from: It could be a city or an airport name or code"
},
"flyTo": {
"type": "string",
"description": "Location to fly to: It could be a city or an airport name or code"
},
"departureDate": {
"type": "string",
"pattern": "^\\d{2}\\/\\d{2}\\/\\d{4}$",
"description": "Departure date in dd/mm/yyyy format"
},
"departureDateFlexRange": {
"type": "integer",
"minimum": 0,
"maximum": 3,
"default": 0,
"description": "Departure date flexibility range in days (0 to 3 days before/after the selected departure date)"
},
"returnDate": {
"type": "string",
"pattern": "^\\d{2}\\/\\d{2}\\/\\d{4}$",
"description": "Return date in dd/mm/yyyy format"
},
"returnDateFlexRange": {
"type": "integer",
"minimum": 0,
"maximum": 3,
"default": 0,
"description": "Return date flexibility range in days (0 to 3 days before/after the selected return date)"
},
"passengers": {
"type": "object",
"properties": {
"adults": {
"type": "integer",
"minimum": 0,
"maximum": 9,
"default": 1,
"description": "Number of adults (over 12 years old included)"
},
"children": {
"type": "integer",
"minimum": 0,
"maximum": 8,
"default": 0,
"description": "Number of children (from 3 to 11 years old included)"
},
"infants": {
"type": "integer",
"minimum": 0,
"maximum": 4,
"default": 0,
"description": "Number of infants (under 2 years old)"
}
},
"additionalProperties": false,
"default": {
"adults": 1,
"children": 0,
"infants": 0
},
"description": "Passengers details. The total number of passengers must be between 1 and 9. There must be at least one adult. There must be at least one adult per infant."
},
"cabinClass": {
"type": "string",
"enum": [
"M",
"W",
"C",
"F"
],
"description": "Cabin class: M (economy), W (economy premium), C (business), F (first class)"
},
"sort": {
"type": "string",
"enum": [
"price",
"duration",
"quality",
"date"
],
"default": "date",
"description": "Sort results by: price, duration, quality or date (default: date)"
},
"curr": {
"type": "string",
"default": "EUR",
"description": "Currency for response (examples: EUR, USD, GBP, JPY, CAD, AUD, NZD, CHF etc.)"
},
"locale": {
"type": "string",
"minLength": 2,
"maxLength": 5,
"default": "en",
"description": "Language of city names and kiwi.com website links (examples: en, uk, de, fr, es, it, ru etc.)"
}
},
"required": [
"flyFrom",
"flyTo",
"departureDate"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
},
"annotations": {
"title": "Search for flights with Kiwi.com",
"readOnlyHint": true,
"openWorldHint": true
}
},
{
"name": "feedback-to-devs",
"description": "Send feedback to the dev of the Kiwi MCP server.",
"inputSchema": {
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"description": "The content of the feedback. Don't hesitate to include any text relevant to the issue (logs, error message) if you are having one."
}
},
"required": [
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
},
"annotations": {
"title": "Send feedback to the devs of the Kiwi.com MCP server",
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true
}
}
]
Collaborator
|
Link check failure unrelated |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
tested locally and also against elastic cloud
note I had to adjust for drift as kiwi syntax of date is different