# flight_calendar

Search flights between a known origin and destination using cached pricing. Use this tool whenever the user specifies BOTH where they are flying FROM and where they are flying TO. WHEN TO USE THIS TOOL (CRITICAL): - The user provides both an origin AND a destination (city or airport) - Examples: "Paris to Barcelona", "JFK to CDG", "London to NYC for a weekend" - Supports loose / flexible dates: single dates, date arrays, date ranges, stay_days - ALSO the right tool for "cheapest flight", "best flight", "find me a flight", "cheapest date" phrasings — this tool returns the cheapest cached itineraries for the given route and window. WHEN TO USE find_destination INSTEAD: - The user does NOT specify a destination: "Where should I go from Paris?", "Best deals from NYC" - The user wants inspiration: "Beach destinations from London", "Cheap flights from SF" WHEN TO USE flight_search INSTEAD: - The user has committed to EXACT dates — both a single departure date AND a single return date for one specific route. - Example: "Paris → NYC, June 17 → June 26" - flight_search hits live pricing (each call has a cost) and is the step immediately before booking. Use it only once route + both dates are locked in. - TRIP-CONTEXT DATES COUNT AS EXACT. If a trip is already in context with a HOTEL, the hotel's check-in and check-out ARE the exact departure/return dates the user wants — even if they don't restate the dates in the message. In that case use flight_search (not flight_calendar) with the hotel's check-in as departure_date and check-out as return_date. Examples: cart has hotel May 8 → May 10 in Madrid; user says "add a flight from Paris" → flight_search with PAR→MAD, dep=2026-05-08, ret=2026-05-10. The trip cross-sell hint confirms this — when it points you at flight_search, follow it. IMPORTANT: All dates in query parameters (departure_dates, departure_date_ranges, return_dates, return_date_ranges) MUST be in the future. Never use past dates. Please fill as much as possible search parameters based on user intent to get best results. Origin and destination must be IATA city code by default except if the user specifies IATA Airport code in the search. ROUTE SEARCH: - Use exact 3-letter IATA airport codes or IATA city code for both origin and destination - Date ranges OR stay duration for flexible trip planning - Natural trip duration (stay_days) instead of exact return dates - By default, please search roundtrip flights unless user specifies one-way. Use trip_type="oneway" ONLY when the user explicitly asks for a one-way trip USE CASES: ✓ "Find flights from JFK to CDG next month" - route + flexible date range ✓ "Fly from LA to Tokyo for a week in December" - uses departure_date + stay_days ✓ "Paris to Barcelona for a weekend in April" - route + loose window ✓ "Cheapest flight from ORD to LHR in June" - route + loose month window ✓ "Direct business-class flight NYC → LON next month" - route with preferences Flow: flight_calendar → (user picks) → flight_search (price_check with offer_token) → trip → book. Or, for precise dates: skip flight_calendar and go straight to flight_search search mode. The widget displays flights in a scrollable carousel with options to view detailed itineraries. Cost: 1 credit per call.

Agent View of the PolicyLayer registry record for `flight_calendar`. HTML page: https://policylayer.com/tools/com-gojinko-mcp-jinko/flight-calendar

## Facts

- Tool: `flight_calendar`
- Server: Jinko MCP (`https://mcp.gojinko.com`) — https://policylayer.com/tools/com-gojinko-mcp-jinko.md
- Homepage: https://github.com/https://mcp.gojinko.com
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server auth posture: open
- Server CORS policy: *
- Server rate-limited: no
- Parameters: 12 (3 required)
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `locale` | string | no | User's BCP 47 locale inferred from the conversation (e.g. "fr-FR", "en-US", "ja-JP"). Used for formatting dates, numbers, and selecting currency. Infer from the |
| `origin` | string | yes | REQUIRED: Single origin airport IATA code or IATA City Code. Example for IATA airport code : "JFK" for John F.Kennedy in New York, "LAX" for Los Angeles. Exampl |
| `sort_by` | string | no | Sort results by this criteria. Default: lowest (best deals first). Options: lowest (cheapest flights), recommendation (best overall value considering price, dur |
| `currency` | string | no | ISO 4217 currency code for displaying prices (e.g. "EUR", "USD", "GBP"). Infer from the user's country or locale. If the user mentions a specific currency, use |
| `max_price` | number | no | Maximum total price per person in specified currency. Helps find flights within budget. Example: 500 means flights up to $500/€500/£500 per person depending on |
| `stay_days` | integer | no | Exact number of days to stay at destination. Used with departure_date to calculate return date automatically. Example: 7 for a week-long trip, 3 for a weekend g |
| `trip_type` | string | yes | REQUIRED: Trip type: "oneway" for one-way flights or "roundtrip" for round-trip flights. |
| `cabin_class` | string | no | Cabin class preference. Options: "economy" (standard economy), "premium_economy" (enhanced economy with more space/amenities), "business" (business class), "fir |
| `destination` | string | yes | REQUIRED: Single origin airport IATA code or IATA City Code. Example for IATA airport code : "LGW" for Gatwick in London, "SFO" for San Francisco. Example for I |
| `direct_only` | boolean | no | Only show direct/nonstop flights. When true, only flights with no stops are returned. Use for fastest travel or when layovers are not desired. |
| `user_intent` | string | no | A concise summary of what the user is trying to accomplish, derived from their message or the conversation context that triggered this tool call. This is used t |
| `return_dates` | array | no | List of specific return dates for round-trip flights (YYYY-MM-DD). Use for searching multiple return date options with OR logic. Must be after departure dates. |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "flight_calendar",
    "arguments": {
      "origin": "<origin>",
      "trip_type": "<trip_type>",
      "destination": "<destination>"
    }
  }
}
```

## Why flight_calendar is rated Medium

An AI agent can call flight_calendar faster than any human can review: one bad instruction and it creates or modifies resources in Jinko MCP by the hundred, each call as confident as the last.

Risk signals: Accepts file system path (destination) · High parameter count (34 properties)

## Use case

AI agents use flight_calendar to create or update resources in Jinko MCP, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Jinko MCP environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Jinko MCP:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "flight_calendar": {
      "limits": [
        {
          "counter": "flight_calendar_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Jinko MCP (6)

- `trip` — Destructive — https://policylayer.com/tools/com-gojinko-mcp-jinko/trip.md
- `find_destination` — Read — https://policylayer.com/tools/com-gojinko-mcp-jinko/find-destination.md
- `flight_search` — Read — https://policylayer.com/tools/com-gojinko-mcp-jinko/flight-search.md
- `hotel_details` — Read — https://policylayer.com/tools/com-gojinko-mcp-jinko/hotel-details.md
- `hotel_search` — Read — https://policylayer.com/tools/com-gojinko-mcp-jinko/hotel-search.md
- `book` — Write — https://policylayer.com/tools/com-gojinko-mcp-jinko/book.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=com-gojinko-mcp-jinko · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/com-gojinko-mcp-jinko
