com.gojinko.mcp/jinko
Jinko MCP
Turn your ChatGPT to a super travel agent
Status
Failing
Score
58.5
Transport
streamable-http
Tools
0
Production readiness
Verdict
Needs remediation
Current validation evidence shows operational or discovery gaps that should be fixed first.
Critical alerts
1
Production verdicts degrade quickly when critical alerts are active.
Evidence confidence
Confidence score
90.0
Based on 20 recent validations, 26 captured checks, and validation age of 0.0 hours.
Live checks captured
26
More direct checks increase trust in the current verdict.
Validation age
0.0h
Lower age means fresher evidence.
Recommended for
Generic Streamable HTTP
Generic Streamable HTTP is marked compatible with score 83.
Client readiness verdicts
Ready for ChatGPT custom connector
Partial
OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.; tools/list must succeed.
Confidence: high (90.0)
Evidence provenance
Winner: live_validation
Supporting sources: live_validation, history, server_card
Disagreements: none
initialize• OKtools_list• Errortransport_compliance_probe• Warningstep_up_auth_probe• Missingconnector_replay_probe• Missing — Frozen tool snapshots must survive refresh.request_association_probe• Missing — Roots, sampling, and elicitation should stay request-scoped.
Ready for Claude remote MCP
Partial
tools/list must succeed.; A useful Claude integration needs at least one exposed tool.
Confidence: high (90.0)
Evidence provenance
Winner: live_validation
Supporting sources: live_validation, history, server_card
Disagreements: none
initialize• OKtools_list• Errortransport_compliance_probe• Warning
Unsafe for write actions
No
Current write surface is bounded enough for cautious review.
Confidence: high (90.0)
Evidence provenance
Winner: live_validation
Supporting sources: live_validation, history
Disagreements: none
action_safety_probe• OK
Snapshot churn risk
Low
No material tool-surface churn detected in the latest comparison.
Confidence: high (90.0)
Evidence provenance
Winner: history
Supporting sources: history, live_validation
Disagreements: none
tool_snapshot_probe• Missingconnector_replay_probe• Missing
Why not ready by client
ChatGPT custom connector
Partial
Remediation checklist
- No explicit blockers recorded.
Claude remote MCP
Partial
Remediation checklist
- No explicit blockers recorded.
Write-safe publishing
Ready
Remediation checklist
- No explicit blockers recorded.
Verdict traces
Production verdict
Needs remediation
Current validation evidence shows operational or discovery gaps that should be fixed first.
Confidence: high (90.0)
Winning source: live_validation
Triggering alerts
server_failing• critical • Latest validation is failing
Client verdict trace table
| Verdict | Status | Checks | Winning source | Conflicts |
|---|---|---|---|---|
openai_connectors |
Partial | initialize, tools_list, transport_compliance_probe, step_up_auth_probe, connector_replay_probe, request_association_probe | live_validation | none |
claude_desktop |
Partial | initialize, tools_list, transport_compliance_probe | live_validation | none |
unsafe_for_write_actions |
No | action_safety_probe | live_validation | none |
snapshot_churn_risk |
Low | tool_snapshot_probe, connector_replay_probe | history | none |
Publishability policy profiles
ChatGPT custom connector publishability
Caution
OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.; tools/list must succeed.
- Search Fetch Only: No
- Write Actions Present: No
- Oauth Configured: No
- Admin Refresh Required: No
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
Claude remote MCP publishability
Caution
tools/list must succeed.; A useful Claude integration needs at least one exposed tool.
- Search Fetch Only: No
- Write Actions Present: No
- Oauth Configured: No
- Admin Refresh Required: No
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
Compatibility fixtures
ChatGPT custom connector fixture
Degraded
OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.; tools/list must succeed.
- remote_http_endpoint: Passes
- oauth_discovery: Degraded
- frozen_tool_snapshot_refresh: Passes
- request_association: Passes
Anthropic remote MCP fixture
Degraded
tools/list must succeed.; A useful Claude integration needs at least one exposed tool.
- remote_transport: Passes
- tool_discovery: Likely to fail
- auth_connect: Passes
- safe_write_review: Passes
Authenticated validation sessions
Latest profile
remote_mcp
Authenticated session used
Public score isolation
Preview endpoint
/v1/verifyCI preview endpoint
/v1/ci/previewPublic server reputation
Validation success 7d
0.0
Validation success 30d
0.0
Mean time to recover
n/a
Breaking diffs 30d
0
Registry drift frequency 30d
0
Snapshot changes 30d
0
Incident & change feed
| Timestamp | Event | Details |
|---|---|---|
| May 04, 2026 05:53:54 AM UTC | Latest validation: failing | Score 58.5 with status failing. |
| May 04, 2026 05:43:02 AM UTC | Score changed | Score delta +0.3 versus the previous run. |
Capabilities
- OAuth:
- DCR/CIMD:
- Prompts:
- Homepage: https://gojinko.com
- Docs: none
- Support: none
- Icon: none
- Remote endpoint: https://mcp.gojinko.com
- Server card: none
Use-case taxonomy
communication automation
Security posture
Tools analyzed
0
High-risk tools
0
Destructive tools
0
Exec tools
0
Egress tools
0
Secret tools
0
Bulk-access tools
0
Risk distribution
none
Tool capability & risk inventory
No tool inventory available from the latest validation run.
Write-action governance
Governance status
OK
Safe to publish
Auth boundary
public_or_unclear
Blast radius
Low
High-risk tools
0
Confirmation signals
none
Safeguard count
0
Status detail: No unsafe write-action governance gaps detected on the latest validation.
| Tool | Risk | Flags | Safeguards |
|---|---|---|---|
| No high-risk tools were detected on the latest run. | |||
Action-controls diff
Need at least two validation runs before diffing action controls.
Why this score?
Access & Protocol
32.5/44
Connectivity, auth, and transport expectations for common clients.
Interface Quality
13.88/56
How well the tool/resource interface communicates and behaves under automation.
Security Posture
25/36
How safely the exposed tool surface handles destructive actions, egress, execution, secrets, and risky inputs.
Reliability & Trust
17.83/24
Operational stability, consistency, and trustworthiness over time.
Discovery & Governance
21.5/28
How well the server is documented, listed, and governed in public registries.
Adoption & Market
4/8
Adoption clues and public evidence that the server is intended for external use.
Algorithmic score breakdown
Auth Operability
2/4
Measures whether auth discovery and protected access behave predictably for clients.
Error Contract Quality
0.5/4
Grades machine-readable error structure, status alignment, and remediation hints.
Rate-Limit Semantics
2/4
Checks whether quota/throttle responses are deterministic and automation-friendly.
Schema Completeness
0/4
Completeness of tool descriptions, parameter docs, examples, and schema shape.
Backward Compatibility
4/4
Stability score across tool schema/name drift relative to prior validations.
SLO Health
3/4
Availability, latency, and burst-failure profile across recent validation history.
Security Hygiene
3/4
HTTPS posture, endpoint hygiene, and response-surface hardening checks.
Task Success
3.3/4
Can an agent reliably initialize, enumerate tools, and execute core MCP flows?
Trust Confidence
2/4
Confidence-adjusted reliability score that penalizes low evidence volume.
Abuse/Noise Resilience
2.5/4
How well the server preserves core behavior in the presence of noisy traffic patterns.
Prompt Contract
2/4
Quality of prompt metadata, argument shape, and prompt discoverability for clients.
Resource Contract
2/4
How completely resources and resource templates describe URIs, types, and usage shape.
Discovery Metadata
4/4
Homepage, docs, icon, repository, support, and license coverage for directory consumers.
Registry Consistency
2/4
Agreement between stored registry metadata, live server-card data, and current validation output.
Installability
2/4
How cleanly a real client can connect, initialize, enumerate tools, and proceed through auth.
Session Semantics
2.5/4
Determinism and state behavior across repeated MCP calls, including sticky-session surprises.
Tool Surface Design
0/4
Naming clarity, schema ergonomics, and parameter complexity across the tool surface.
Result Shape Stability
0/4
Stability of declared output schemas across validations, with penalties for drift or missing shapes.
OAuth Interop
3/4
Depth and client compatibility of OAuth/OIDC metadata beyond the minimal protected-resource check.
Recovery Semantics
0.4/4
Whether failures include actionable machine-readable next steps such as retry or upgrade guidance.
Maintenance Signal
3/4
Versioning, update recency, and historical validation cadence that indicate active stewardship.
Adoption Signal
2/4
Directory presence and distribution clues that suggest the server is intended for external use.
Freshness Confidence
3/4
Confidence that recent validations are current enough and dense enough to trust operationally.
Transport Fidelity
4/4
Whether declared transport metadata matches the observed endpoint behavior and response formats.
Spec Recency
3/4
How close the server’s claimed MCP protocol version is to the latest known public revision.
Session Resume
4/4
Whether Streamable HTTP session identifiers and resumed requests behave cleanly for real clients.
Step-Up Auth
3/4
Whether OAuth metadata and WWW-Authenticate challenges support granular, incremental consent instead of broad upfront scopes.
Transport Compliance
3/4
Checks session headers, protocol-version enforcement, session teardown, and expired-session behavior.
Utility Coverage
2/4
Signals support for completions, pagination, and task-oriented utility surfaces that larger clients increasingly expect.
Advanced Capability Coverage
2/4
Coverage of newer MCP surfaces like roots, sampling, elicitation, structured output, and related metadata.
Connector Publishability
2/4
How ready the server looks for client catalogs and managed connector programs.
Tool Snapshot Churn
0/4
Stability of the tool surface across recent validations, including add/remove and output-shape drift.
Connector Replay
3/4
Whether a previously published frozen connector snapshot would remain backward compatible after the latest tool refresh.
Request Association
3/4
Whether roots, sampling, and elicitation appear tied to active client requests instead of arriving unsolicited on idle sessions.
Interactive Flow Safety
3/4
Whether prompts and docs steer users toward safe auth flows instead of pasting secrets directly.
Action Safety
3/4
Risk-weighted view of destructive, exec, egress, and confirmation semantics across the tool surface.
Official Registry Presence
4/4
Whether the server appears directly or indirectly in the official MCP registry.
Provenance Divergence
4/4
How closely official registry metadata, the live server card, and public repo/package signals agree with each other.
Safety Transparency
2/4
Clarity of docs, auth disclosure, support links, and other trust signals visible to integrators.
Tool Capability Clarity
0/4
How clearly the tool surface communicates whether each action reads, writes, deletes, executes, or exports data.
Destructive Operation Safety
3/4
Penalizes delete/revoke/destroy style tools unless auth and safeguards reduce blast radius.
Egress / SSRF Resilience
3/4
Assesses arbitrary URL fetch, crawl, webhook, and remote-request exposure on the tool surface.
Execution / Sandbox Safety
4/4
Evaluates shell, code, script, and command-execution exposure and whether that surface appears contained.
Data Exfiltration Resilience
3/4
Assesses export, dump, backup, and bulk-read behavior against the surrounding auth and safeguard signals.
Least Privilege Scope
3/4
Rewards scoped auth metadata and penalizes broad or missing scopes around privileged tools.
Secret Handling Hygiene
3/4
Assesses secret-bearing tools, token leakage risk, and whether the public surface avoids obvious secret exposure.
Supply Chain Signal
2.5/4
Public metadata signal for repository, changelog, license, versioning, and recency that supports supply-chain trust.
Input Sanitization Safety
0/4
Penalizes risky freeform string inputs when schemas do not constrain URLs, code, paths, queries, or templates.
Tool Namespace Clarity
0/4
Measures naming uniqueness and ambiguity across the tool namespace to reduce collision and confusion risk.
Compatibility profiles
OpenAI Connectors
66.7
partial
OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.; tools/list must succeed.
Connector URL: https://mcp.gojinko.com # No OAuth metadata detected. # Server: com.gojinko.mcp/jinko
Claude Desktop
66.7
partial
tools/list must succeed.; A useful Claude integration needs at least one exposed tool.
{
"mcpServers": {
"jinko": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.gojinko.com"]
}
}
}
Smithery
60.0
partial
Tool discovery must succeed.; Machine-readable failure semantics should be present.
smithery mcp add "https://mcp.gojinko.com"
Generic Streamable HTTP
83.3
compatible
tools/list must succeed.
curl -sS https://mcp.gojinko.com -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Actionable remediation
| Severity | Remediation | Why it matters | Recommended action |
|---|---|---|---|
| Critical | Ensure tools/list succeeds consistently | Tools discovery is the minimum viable contract for most MCP clients and directories. | Make tools/list succeed unauthenticated when possible, or document the auth flow in the server card.Playbook
|
| Critical | Respond to latest validation is failing | Core MCP flows did not validate successfully on the latest run. | Fix the failing checks first, then revalidate to confirm the recovery path.Playbook
|
| High | Align session and protocol behavior with Streamable HTTP expectations | Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics. | Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.Playbook
|
| High | Associate roots, sampling, and elicitation with active client requests | Modern MCP guidance expects roots, sampling, and elicitation traffic to be tied to an active client request instead of arriving unsolicited on idle sessions. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Expose /.well-known/oauth-protected-resource | Without a protected-resource document, OAuth clients cannot discover auth requirements reliably. | Serve /.well-known/oauth-protected-resource and point it at your authorization server metadata.Playbook
|
| High | Keep connector refreshes backward compatible | Managed connector clients freeze tool snapshots, so removed tools, new required args, and breaking output changes can break published integrations after refresh. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Publish OAuth authorization-server metadata | Clients need authorization-server metadata to discover issuer, endpoints, and DCR support. | Publish /.well-known/oauth-authorization-server from your issuer and include registration_endpoint when supported.Playbook
|
| High | Publish a complete server card | Missing or incomplete server-card metadata weakens discovery, documentation, and trust signals. | Serve /.well-known/mcp/server-card.json and include tools, prompts/resources, homepage, and support links.Playbook
|
| High | Stop asking users to paste secrets directly | Public MCP servers should prefer OAuth or browser-based auth guidance over in-band secret collection. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Adopt a current MCP protocol revision | Older protocol revisions reduce compatibility with newer clients and registry programs. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Close connector-publishing gaps | Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Document minimal scopes and return cleaner auth challenges | Modern clients expect granular scopes and step-up auth signals such as WWW-Authenticate scope hints. | Return granular scopes and WWW-Authenticate challenge hints instead of forcing overly broad auth upfront.Playbook
|
| Medium | Publish OpenID configuration | OIDC metadata improves token validation and client compatibility. | Expose /.well-known/openid-configuration with issuer, jwks_uri, and supported grants.Playbook
|
| Medium | Raise Adoption & Market score | Adoption clues and public evidence that the server is intended for external use. | Increase external documentation and directory coverage so users can discover and evaluate the server.Playbook
|
| Medium | Raise Interface Quality score | How well the tool/resource interface communicates and behaves under automation. | Improve schemas, error contracts, and recovery messages so agents can reason about the surface automatically.Playbook
|
| Medium | Reduce tool-surface churn | Frequent add/remove or output-shape drift makes published connectors and cached tool snapshots brittle. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Repair prompts/list or stop advertising prompts | Prompt metadata should either work live or be removed from the advertised capability set. | Only advertise prompts if prompts/list works and prompt arguments are documented.Playbook
|
| Medium | Repair resources/list or stop advertising resources | Resource metadata should either work live or be removed from the advertised capability set. | Only advertise resources if resources/list works and resources expose stable URIs/types.Playbook
|
| Low | Expose modern utility surfaces like completions, pagination, or tasks | Utility coverage improves interoperability with larger clients and long-lived agent workflows. | Expose completions, pagination, and task metadata where supported so larger clients can plan and resume work safely.Playbook
|
| Low | Publish newer MCP capability signals | Roots, sampling, elicitation, structured outputs, and related metadata improve client understanding and ranking. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
Point loss breakdown
| Component | Current | Points missing |
|---|---|---|
| Tool Surface Design | 0/4 | -4.0 |
| Tool Snapshot Churn | 0/4 | -4.0 |
| Tool Namespace Clarity | 0/4 | -4.0 |
| Tool Capability Clarity | 0/4 | -4.0 |
| Schema Completeness | 0/4 | -4.0 |
| Result Shape Stability | 0/4 | -4.0 |
| Input Sanitization Safety | 0/4 | -4.0 |
| Recovery Semantics | 0.4/4 | -3.6 |
| Error Contract | 0.5/4 | -3.5 |
| Utility Coverage | 2/4 | -2.0 |
| Trust Confidence | 2/4 | -2.0 |
| Safety Transparency | 2/4 | -2.0 |
Validation diff
Score delta
0
Summary changed
no
Tool delta
0
Prompt delta
0
Auth mode changed
no
Write surface expanded
no
Protocol regressed
no
Registry drift changed
no
Regressed checks: none
Improved checks: none
| Component | Previous | Latest | Delta |
|---|---|---|---|
| No component deltas between the latest two runs. | |||
Tool snapshot diff & changelog
Need at least two validation runs before building a tool changelog.
Connector replay
Status
Missing
Backward compatible
Would break after refresh
Added tools
none
Removed tools
none
Additive output changes
none
Required-argument replay breaks
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument replay breaks detected. | ||
Output-schema replay breaks
| Tool | Removed properties | Added properties |
|---|---|---|
| No output-schema replay breaks detected. | ||
Transport compliance drilldown
Probe status
Warning
Transport
streamable-http
Session header
yes
Protocol header
no
Bad protocol response
400
DELETE teardown
200
Expired session retry
404
Last-Event-ID visible
no
Issues: missing_protocol_header
Request association
Status
Missing
Advertised capabilities
none
Observed idle methods
none
Violating methods
none
Probe HTTP status
n/a
Issues
none
Utility coverage
Probe status
Missing
Completions
not detected
Completion probe target: none
Pagination
not detected
No nextCursor evidence.
Tasks
Missing
Advertised: no
Benchmark tasks
| Benchmark task | Status | Evidence |
|---|---|---|
| Discover tools | Likely to fail |
|
| Read-only fetch flow | Likely to fail |
|
| OAuth-required connect | Degraded |
|
| Safe write flow with confirmation | Passes |
|
Registry & provenance divergence
Probe status
OK
Direct official match
yes
Drift fields
none
| Field | Registry | Live server card |
|---|---|---|
| Title | n/a | n/a |
| Version | n/a | n/a |
| Homepage | n/a | n/a |
Active alerts
- Latest validation is failing (critical)
Core MCP flows did not validate successfully on the latest run.
Aliases & registry graph
| Identifier | Source | Canonical | Score |
|---|---|---|---|
com.gojinko.mcp/jinko |
official_registry | yes | 58.53 |
Alias consolidation
Canonical identifier
com.gojinko.mcp/jinko
Duplicate aliases
0
Registry sources
official_registry
Remote URLs
Homepages
Source disagreements
| Field | What differs | Observed values |
|---|---|---|
| No source disagreements detected. | ||
Install snippets
Openai Connectors
Connector URL: https://mcp.gojinko.com # No OAuth metadata detected. # Server: com.gojinko.mcp/jinko
Claude Desktop
{
"mcpServers": {
"jinko": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.gojinko.com"]
}
}
}
Smithery
smithery mcp add "https://mcp.gojinko.com"
Generic Http
curl -sS https://mcp.gojinko.com -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Agent access & tool surface
Live server tools
No live tool surface captured yet.
Observed from the latest live validation against https://mcp.gojinko.com. This is the target server surface, not Verify's own inspection tools.
Live capability counts
0 tools • 0 prompts • 0 resources
Counts come from the latest
tools/list, prompts/list, and resources/list checks.Inspect with Verify
search_servers recommend_servers get_server_report compare_servers
Use Verify itself to search, recommend, compare, and fetch the full report for
com.gojinko.mcp/jinko.Direct machine links
Claims & monitoring
Server ownership
No verified maintainer claim recorded.
Watch subscriptions
0
Teams: none
Alert routing
Active watches
0
Generic webhooks
0
Slack routes
0
Teams routes
0
Email routes
0
| Watch | Team | Channels | Minimum severity |
|---|---|---|---|
| No active watch destinations. | |||
Maintainer analytics
Validation Run Count
20
Average Latency Ms
1022.04
Healthy Run Ratio Recent
0.0
Registry Presence Count
1
Active Alert Count
1
Watcher Count
0
Verified Claim
False
Taxonomy Tags
communication, automation
Score Trend
58.53, 58.53, 58.53, 58.19, 58.19, 58.16, 58.16, 58.16, 58.16, 58.16
Remediation Count
20
High Risk Tool Count
0
Destructive Tool Count
0
Exec Tool Count
0
Maintainer response quality
Score
16.67
Verified claim
Support contact
Changelog present
Incident notes present
Tool changes documented
Annotation history
Annotation count
0
Maintainer annotations
No maintainer annotations have been recorded yet.
Maintainer rebuttals & expected behavior
No maintainer rebuttals or expected-behavior overrides are recorded yet.
Latest validation evidence
Latest summary
Failing
Validation profile
remote_mcp
Started
May 04, 2026 05:53:53 AM UTC
Latency
972.1 ms
Failures
oauth_authorization_serverno authorization serveroauth_protected_resourceClient error '404 Not Found' for url 'https://mcp.gojinko.com/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404openid_configurationno authorization serverserver_cardClient error '404 Not Found' for url 'https://mcp.gojinko.com/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404tools_listClient error '400 Bad Request' for url 'https://mcp.gojinko.com' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
Checks
| Check | Status | Latency | Evidence |
|---|---|---|---|
action_safety_probe |
OK | n/a | No high-risk write, destructive, or exec tools detected. |
advanced_capabilities_probe |
Missing | n/a | No advanced MCP capability signals detected. |
connector_publishability_probe |
Error | n/a | Publishability blockers: tools list, server card, tool surface. |
connector_replay_probe |
Missing | n/a | No connector replay evidence recorded. |
determinism_probe |
Missing | n/a | tools list unavailable |
initialize |
OK | 88.8 ms | Protocol 2025-06-18 |
interactive_flow_probe |
Missing | n/a | Check completed |
oauth_authorization_server |
Missing | n/a | no authorization server |
oauth_protected_resource |
Error | 97.5 ms | Client error '404 Not Found' for url 'https://mcp.gojinko.com/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
official_registry_probe |
OK | n/a | Check completed |
openid_configuration |
Missing | n/a | no authorization server |
probe_noise_resilience |
OK | 34.6 ms | Fetched https://mcp.gojinko.com/robots.txt |
prompt_get |
Missing | n/a | not advertised |
prompts_list |
Missing | 95.7 ms | Client error '400 Bad Request' for url 'https://mcp.gojinko.com' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 |
protocol_version_probe |
Warning | n/a | Claims 2025-06-18; 1 release(s) behind 2025-11-25. |
provenance_divergence_probe |
OK | n/a | Check completed |
request_association_probe |
Missing | n/a | No request-association capabilities were advertised. |
resource_read |
Missing | n/a | not advertised |
resources_list |
Missing | 98.8 ms | Client error '400 Bad Request' for url 'https://mcp.gojinko.com' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 |
server_card |
Error | 117.5 ms | Client error '404 Not Found' for url 'https://mcp.gojinko.com/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
session_resume_probe |
OK | 132.1 ms | 6 tool(s) exposed |
step_up_auth_probe |
Missing | n/a | No OAuth or incremental-scope signals detected. |
tool_snapshot_probe |
Missing | n/a | no tools |
tools_list |
Error | 69.7 ms | Client error '400 Bad Request' for url 'https://mcp.gojinko.com' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 |
transport_compliance_probe |
Warning | 59.6 ms | Issues: missing protocol header (bad protocol=400, DELETE=200, expired session=404). |
utility_coverage_probe |
Missing | 40.3 ms | No completions evidence; no pagination evidence; tasks missing. |
Raw evidence view
Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": false,
"confirmation_signals": [],
"safeguard_count": 0,
"summary": {
"bulk_access_tools": 0,
"capability_distribution": {},
"destructive_tools": 0,
"egress_tools": 0,
"exec_tools": 0,
"high_risk_tools": 0,
"risk_distribution": {
"critical": 0,
"high": 0,
"low": 0,
"medium": 0
},
"secret_tools": 0,
"tool_count": 0
}
},
"latency_ms": null,
"status": "ok"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": false,
"elicitation": false,
"prompts": false,
"resource_links": false,
"resources": false,
"roots": false,
"sampling": false,
"structured_outputs": false
},
"enabled": [],
"enabled_count": 0,
"initialize_capability_keys": [
"resources",
"tools"
]
},
"latency_ms": null,
"status": "missing"
},
"connector_publishability_probe": {
"details": {
"blockers": [
"tools_list",
"server_card",
"tool_surface"
],
"criteria": {
"action_safety": true,
"auth_flow": true,
"connector_replay": true,
"initialize": true,
"protocol_version": true,
"remote_transport": true,
"request_association": true,
"server_card": false,
"session_resume": true,
"step_up_auth": true,
"tool_surface": false,
"tools_list": false,
"transport_compliance": true
},
"high_risk_tools": 0,
"tool_count": 0,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "error"
},
"connector_replay_probe": {
"details": {
"reason": "no_tools"
},
"latency_ms": null,
"status": "missing"
},
"determinism_probe": {
"details": {
"reason": "tools_list_unavailable"
},
"latency_ms": null,
"status": "missing"
},
"initialize": {
"details": {
"headers": {
"content-type": "text/event-stream",
"mcp-session-id": "da8cee6c-c51d-471f-a49a-165dd3fad12a",
"strict-transport-security": "max-age=31536000; includeSubDomains; preload"
},
"http_status": 200,
"payload": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"capabilities": {
"resources": {
"listChanged": true,
"subscribe": false
},
"tools": {
"listChanged": true
}
},
"protocolVersion": "2025-06-18",
"serverInfo": {
"name": "jinko-unified",
"title": "jinko-unified",
"version": "1.0.0"
}
}
},
"url": "https://mcp.gojinko.com"
},
"latency_ms": 88.77,
"status": "ok"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": false,
"prompt_available": false,
"risk_hits": [],
"safe_hits": []
},
"latency_ms": null,
"status": "missing"
},
"oauth_authorization_server": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"oauth_protected_resource": {
"details": {
"error": "Client error '404 Not Found' for url 'https://mcp.gojinko.com/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.gojinko.com/.well-known/oauth-protected-resource"
},
"latency_ms": 97.53,
"status": "error"
},
"official_registry_probe": {
"details": {
"direct_match": true,
"official_peer_count": 1,
"registry_identifier": "com.gojinko.mcp/jinko",
"registry_source": "official_registry"
},
"latency_ms": null,
"status": "ok"
},
"openid_configuration": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"probe_noise_resilience": {
"details": {
"headers": {
"content-type": "text/plain; charset=utf-8"
},
"http_status": 200,
"url": "https://mcp.gojinko.com/robots.txt"
},
"latency_ms": 34.6,
"status": "ok"
},
"prompt_get": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"prompts_list": {
"details": {
"error": "Client error '400 Bad Request' for url 'https://mcp.gojinko.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400",
"headers": {
"content-type": "application/json; charset=utf-8",
"strict-transport-security": "max-age=31536000; includeSubDomains; preload"
},
"http_status": 400,
"payload": {},
"reason": "not_advertised",
"url": "https://mcp.gojinko.com"
},
"latency_ms": 95.69,
"status": "missing"
},
"protocol_version_probe": {
"details": {
"claimed_version": "2025-06-18",
"lag_days": 160,
"latest_known_version": "2025-11-25",
"releases_behind": 1,
"validator_protocol_version": "2025-03-26"
},
"latency_ms": null,
"status": "warning"
},
"provenance_divergence_probe": {
"details": {
"direct_official_match": true,
"drift_fields": [],
"metadata_document_count": 2,
"registry_homepage": null,
"registry_repository": null,
"registry_title": null,
"registry_version": null,
"server_card_homepage": null,
"server_card_repository": null,
"server_card_title": null,
"server_card_version": null
},
"latency_ms": null,
"status": "ok"
},
"request_association_probe": {
"details": {
"reason": "no_request_association_capabilities_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resource_read": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resources_list": {
"details": {
"error": "Client error '400 Bad Request' for url 'https://mcp.gojinko.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400",
"headers": {
"content-type": "application/json; charset=utf-8",
"strict-transport-security": "max-age=31536000; includeSubDomains; preload"
},
"http_status": 400,
"payload": {},
"reason": "not_advertised",
"url": "https://mcp.gojinko.com"
},
"latency_ms": 98.77,
"status": "missing"
},
"server_card": {
"details": {
"error": "Client error '404 Not Found' for url 'https://mcp.gojinko.com/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.gojinko.com/.well-known/mcp/server-card.json"
},
"latency_ms": 117.48,
"status": "error"
},
"session_resume_probe": {
"details": {
"headers": {
"content-type": "text/event-stream",
"mcp-session-id": "da8cee6c-c51d-471f-a49a-165dd3fad12a",
"strict-transport-security": "max-age=31536000; includeSubDomains; preload"
},
"http_status": 200,
"payload": {
"id": 301,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"_meta": {
"openai/outputTemplate": "ui://widgets.gojinko.com/202512112048/flight-carousel-unified.html",
"openai/toolInvocation/invoked": "Let's Go Jinko",
"openai/toolInvocation/invoking": "Crunching Data For You...",
"openai/widgetAccessible": true,
"ui": {
"csp": {
"connectDomains": [
"https://jinkotravel.com",
"https://api.mapbox.com",
"https://events.mapbox.com",
"https://checkout.stripe.com/",
"https://www.delta.com",
"https://www.united.com",
"https://www.aa.com",
"https://www.southwest.com",
"https://www.alaskaair.com",
"https://www.aircanada.com",
"https://www.jetblue.com",
"https://www.spirit.com",
"https://flights.flyfrontier.com",
"https://www.volaris.com",
"https://www.vivaaerobus.com",
"https://www.aeromexico.com",
"https://www.westjet.com",
"https://www.allegiantair.com",
"https://www.hawaiianairlines.com",
"https://flights.flyflair.com",
"https://www.ryanair.com",
"https://www.easyjet.com",
"https://www.britishairways.com",
"https://www.iberia.com",
"https://tickets.vueling.com",
"https://www.lufthansa.com",
"https://www.wizzair.com",
"https://www.jet2.com",
"https://www.airfrance.com",
"https://www.transavia.com",
"https://www.turkishairlines.com",
"https://www.klm.com",
"https://www.qatarairways.com",
"https://www.ceair.com",
"https://www.emirates.com",
"https://www.swiss.com",
"https://www.flytap.com",
"https://www.royalairmaroc.com",
"https://www.alitalia.com",
"https://www.airchina.com",
"https://www.flysas.com",
"https://www.etihad.com",
"https://www.latam.com",
"https://www.csair.com",
"https://www.austrian.com",
"https://www.airalgerie.dz",
"https://www.lot.com",
"https://www.aireuropa.com",
"https://www.airindia.com",
"https://www.virginatlantic.com",
"https://www.brusselsairlines.com",
"https://www.vietnamairlines.com",
"https://www.cathaypacific.com",
"https://www.ana.co.jp",
"https://www.avianca.com",
"https://www.finnair.com",
"https://www.tunisair.com",
"https://www.aircorsica.com",
"https://www.ethiopianairlines.com",
"https://www.airserbia.com",
"https://www.flypgs.com",
"https://www.airdolomiti.eu",
"https://www.aircaraibes.com",
"https://www.jal.com",
"https://www.valuair.com.sg",
"https://www.thaiairways.com",
"https://www.aerlingus.com",
"https://en.aegeanair.com",
"https://www.singaporeair.com",
"https://www.hahnair.com",
"https://www.airmauritius.com",
"https://www.icelandair.com",
"https://www.hainanairlines.com",
"https://www.malaysiaairlines.com",
"https://www.qantas.com",
"https://www.norwegian.com",
"https://www.kenya-airways.com",
"https://www.gulfair.com",
"https://www.airbaltic.com",
"https://www.condor.com",
"https://www.airtransat.com",
"https://www.koreanair.com",
"https://www.saudia.com",
"https://www.volotea.com",
"https://www.azoresairlines.pt",
"https://www.tarom.ro",
"https://www.rj.com",
"https://www.omanair.com",
"https://www.air-austral.com",
"https://www.luxair.lu",
"https://www.egyptair.com",
"https://www.evaair.com",
"https://www.croatiaairlines.com",
"https://www.elal.com",
"https://www.airtahitinui.com",
"https://www.xiamenair.com",
"https://www.frenchbee.com",
"https://www.flycorsair.com",
"https://gojinko.com",
"https://mcp.gojinko.com",
"https://api.gojinko.com",
"https://gojinko.com",
"https://www.gojinko.com",
"https://app.gojinko.com",
"https://widgets.gojinko.com"
],
"resourceDomains": [
"https://jinkotravel.com",
"https://api.mapbox.com/",
"https://cdn.openai.com",
"https://statics.gojinko.com",
"https://widgets.gojinko.com",
"https://gojinko.com",
"https://www.gojinko.com",
"https://app.gojinko.com"
]
},
"resourceUri": "ui://widgets.gojinko.com/202512112048/flight-carousel-unified.html"
},
"ui/resourceUri": "ui://widgets.gojinko.com/202512112048/flight-carousel-unified.html"
},
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "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.\n\nWHEN TO USE THIS TOOL (CRITICAL):\n- The user provides both an origin AND a destination (city or airport)\n- Examples: \"Paris to Barcelona\", \"JFK to CDG\", \"London to NYC for a weekend\"\n- Supports loose / flexible dates: single dates, date arrays, date ranges, stay_days\n- ALSO the right tool for \"cheapest flight\", \"best flight\", \"find me a flight\", \"cheapest date\" phrasings \u2014 this tool returns the cheapest cached itineraries for the given route and window.\n\nWHEN TO USE find_destination INSTEAD:\n- The user does NOT specify a destination: \"Where should I go from Paris?\", \"Best deals from NYC\"\n- The user wants inspiration: \"Beach destinations from London\", \"Cheap flights from SF\"\n\nWHEN TO USE flight_search INSTEAD:\n- The user has committed to EXACT dates \u2014 both a single departure date AND a single return date for one specific route.\n- Example: \"Paris \u2192 NYC, June 17 \u2192 June 26\"\n- 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.\n\nIMPORTANT:\n All dates in query parameters (departure_dates, departure_date_ranges, return_dates, return_date_ranges) MUST be in the future. Never use past dates.\n Please fill as much as possible search parameters based on user intent to get best results.\n Origin and destination must be IATA city code by default except if the user specifies IATA Airport code in the search.\n\nROUTE SEARCH:\n- Use exact 3-letter IATA airport codes or IATA city code for both origin and destination\n- Date ranges OR stay duration for flexible trip planning\n- Natural trip duration (stay_days) instead of exact return dates\n- 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\n\nUSE CASES:\n\u2713 \"Find flights from JFK to CDG next month\" - route + flexible date range\n\u2713 \"Fly from LA to Tokyo for a week in December\" - uses departure_date + stay_days\n\u2713 \"Paris to Barcelona for a weekend in April\" - route + loose window\n\u2713 \"Cheapest flight from ORD to LHR in June\" - route + loose month window\n\u2713 \"Direct business-class flight NYC \u2192 LON next month\" - route with preferences\n\nFlow: flight_calendar \u2192 (user picks) \u2192 flight_search (price_check with offer_token) \u2192 trip \u2192 book.\nOr, for precise dates: skip flight_calendar and go straight to flight_search search mode.\n\nThe widget displays flights in a scrollable carousel with options to view detailed itineraries.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"cabin_class": {
"description": "Cabin class preference. Options: \"economy\" (standard economy), \"premium_economy\" (enhanced economy with more space/amenities), \"business\" (business class), \"first\" (first class). When specified, only shows flights in the requested cabin class.",
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"type": "string"
},
"currency": {
"description": "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 that.",
"type": "string"
},
"departure_date_ranges": {
"description": "List of departure date ranges for flexible travel exploration. Use when user says \"next month\", \"spring\", or wants to discover deals across multiple date periods with OR logic. Example: [{start: \"2025-12-10\", end: \"2025-12-15\"}, {start: \"2025-12-20\", end: \"2025-12-25\"}] for non-contiguous periods.",
"items": {
"additionalProperties": false,
"properties": {
"end": {
"description": "Range end date (YYYY-MM-DD)",
"type": "string"
},
"start": {
"description": "Range start date (YYYY-MM-DD)",
"type": "string"
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"type": "array"
},
"departure_dates": {
"description": "List of specific departure dates in ISO 8601 format (YYYY-MM-DD). Use for searching multiple specific dates with OR logic. Example: [\"2025-12-15\", \"2025-12-16\", \"2025-12-17\"] for flexible date searches. Useful when user wants to check specific dates like weekends.",
"items": {
"type": "string"
},
"type": "array"
},
"destination": {
"description": "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 IATA city code : \"LHR\" for London, \"BJS\" for Beijing.",
"maxLength": 3,
"minLength": 3,
"type": "string"
},
"direct_only": {
"description": "Only show direct/nonstop flights. When true, only flights with no stops are returned. Use for fastest travel or when layovers are not desired.",
"type": "boolean"
},
"locale": {
"description": "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 user's language and location context.",
"type": "string"
},
"max_price": {
"description": "Maximum total price per person in specified currency. Helps find flights within budget. Example: 500 means flights up to $500/\u20ac500/\u00a3500 per person depending on currency.",
"exclusiveMinimum": 0,
"type": "number"
},
"origin": {
"description": "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. Example for IATA city code : \"NYC\" for New York, \"PAR\" for Paris.",
"maxLength": 3,
"minLength": 3,
"type": "string"
},
"return_date_ranges": {
"description": "List of return date ranges for flexible round-trip exploration. Use when user wants flexibility on return timing across multiple periods with OR logic. Example: [{start: \"2025-12-22\", end: \"2025-12-25\"}, {start: \"2025-12-29\", end: \"2026-01-02\"}]",
"items": {
"$ref": "#/properties/departure_date_ranges/items"
},
"type": "array"
},
"return_dates": {
"description": "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. Example: [\"2025-12-22\", \"2025-12-23\", \"2025-12-24\"]",
"items": {
"type": "string"
},
"type": "array"
},
"sort_by": {
"description": "Sort results by this criteria. Default: lowest (best deals first). Options: lowest (cheapest flights), recommendation (best overall value considering price, duration, and stops).",
"enum": [
"lowest",
"recommendation"
],
"type": "string"
},
"stay_days": {
"description": "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 getaway.",
"maximum": 365,
"minimum": 1,
"type": "integer"
},
"stay_days_range": {
"additionalProperties": false,
"description": "Flexible stay duration range. Use when user wants flexibility in trip length (e.g., \"5 to 10 days\"). Cannot be combined with exact stay_days or return_date. Example: {min: 5, max: 10}",
"properties": {
"max": {
"description": "Maximum stay duration in days",
"maximum": 365,
"type": "integer"
},
"min": {
"description": "Minimum stay duration in days",
"minimum": 1,
"type": "integer"
}
},
"required": [
"min",
"max"
],
"type": "object"
},
"trip_type": {
"description": "REQUIRED: Trip type: \"oneway\" for one-way flights or \"roundtrip\" for round-trip flights.",
"enum": [
"oneway",
"roundtrip"
],
"type": "string"
},
"user_query": {
"description": "The original natural-language user query that triggered this tool call. Used for context.",
"type": "string"
}
},
"required": [
"origin",
"destination",
"trip_type"
],
"type": "object"
},
"name": "flight_calendar",
"title": "flight_calendar"
},
{
"_meta": {
"openai/outputTemplate": "ui://widgets.gojinko.com/202512112048/flight-carousel-unified.html",
"openai/toolInvocation/invoked": "Let's Go Jinko",
"openai/toolInvocation/invoking": "Crunching Data For You...",
"openai/visibility": "private",
"openai/widgetAccessible": true,
"ui": {
"csp": {
"connectDomains": [
"https://jinkotravel.com",
"https://api.mapbox.com",
"https://events.mapbox.com",
"https://checkout.stripe.com/",
"https://www.delta.com",
"https://www.united.com",
"https://www.aa.com",
"https://www.southwest.com",
"https://www.alaskaair.com",
"https://www.aircanada.com",
"https://www.jetblue.com",
"https://www.spirit.com",
"https://flights.flyfrontier.com",
"https://www.volaris.com",
"https://www.vivaaerobus.com",
"https://www.aeromexico.com",
"https://www.westjet.com",
"https://www.allegiantair.com",
"https://www.hawaiianairlines.com",
"https://flights.flyflair.com",
"https://www.ryanair.com",
"https://www.easyjet.com",
"https://www.britishairways.com",
"https://www.iberia.com",
"https://tickets.vueling.com",
"https://www.lufthansa.com",
"https://www.wizzair.com",
"https://www.jet2.com",
"https://www.airfrance.com",
"https://www.transavia.com",
"https://www.turkishairlines.com",
"https://www.klm.com",
"https://www.qatarairways.com",
"https://www.ceair.com",
"https://www.emirates.com",
"https://www.swiss.com",
"https://www.flytap.com",
"https://www.royalairmaroc.com",
"https://www.alitalia.com",
"https://www.airchina.com",
"https://www.flysas.com",
"https://www.etihad.com",
"https://www.latam.com",
"https://www.csair.com",
"https://www.austrian.com",
"https://www.airalgerie.dz",
"https://www.lot.com",
"https://www.aireuropa.com",
"https://www.airindia.com",
"https://www.virginatlantic.com",
"https://www.brusselsairlines.com",
"https://www.vietnamairlines.com",
"https://www.cathaypacific.com",
"https://www.ana.co.jp",
"https://www.avianca.com",
"https://www.finnair.com",
"https://www.tunisair.com",
"https://www.aircorsica.com",
"https://www.ethiopianairlines.com",
"https://www.airserbia.com",
"https://www.flypgs.com",
"https://www.airdolomiti.eu",
"https://www.aircaraibes.com",
"https://www.jal.com",
"https://www.valuair.com.sg",
"https://www.thaiairways.com",
"https://www.aerlingus.com",
"https://en.aegeanair.com",
"https://www.singaporeair.com",
"https://www.hahnair.com",
"https://www.airmauritius.com",
"https://www.icelandair.com",
"https://www.hainanairlines.com",
"https://www.malaysiaairlines.com",
"https://www.qantas.com",
"https://www.norwegian.com",
"https://www.kenya-airways.com",
"https://www.gulfair.com",
"https://www.airbaltic.com",
"https://www.condor.com",
"https://www.airtransat.com",
"https://www.koreanair.com",
"https://www.saudia.com",
"https://www.volotea.com",
"https://www.azoresairlines.pt",
"https://www.tarom.ro",
"https://www.rj.com",
"https://www.omanair.com",
"https://www.air-austral.com",
"https://www.luxair.lu",
"https://www.egyptair.com",
"https://www.evaair.com",
"https://www.croatiaairlines.com",
"https://www.elal.com",
"https://www.airtahitinui.com",
"https://www.xiamenair.com",
"https://www.frenchbee.com",
"https://www.flycorsair.com",
"https://gojinko.com",
"https://mcp.gojinko.com",
"https://api.gojinko.com",
"https://gojinko.com",
"https://www.gojinko.com",
"https://app.gojinko.com",
"https://widgets.gojinko.com"
],
"resourceDomains": [
"https://jinkotravel.com",
"https://api.mapbox.com/",
"https://cdn.openai.com",
"https://statics.gojinko.com",
"https://widgets.gojinko.com",
"https://gojinko.com",
"https://www.gojinko.com",
"https://app.gojinko.com"
]
},
"resourceUri": "ui://widgets.gojinko.com/202512112048/flight-carousel-unified.html",
"visibility": [
"app"
]
},
"ui/resourceUri": "ui://widgets.gojinko.com/202512112048/flight-carousel-unified.html"
},
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Search flights between a known origin and destination. (Legacy alias for flight_calendar \u2014 identical behavior and schema.)",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"cabin_class": {
"description": "Cabin class preference. Options: \"economy\" (standard economy), \"premium_economy\" (enhanced economy with more space/amenities), \"business\" (business class), \"first\" (first class). When specified, only shows flights in the requested cabin class.",
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"type": "string"
},
"currency": {
"description": "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 that.",
"type": "string"
},
"departure_date_ranges": {
"description": "List of departure date ranges for flexible travel exploration. Use when user says \"next month\", \"spring\", or wants to discover deals across multiple date periods with OR logic. Example: [{start: \"2025-12-10\", end: \"2025-12-15\"}, {start: \"2025-12-20\", end: \"2025-12-25\"}] for non-contiguous periods.",
"items": {
"additionalProperties": false,
"properties": {
"end": {
"description": "Range end date (YYYY-MM-DD)",
"type": "string"
},
"start": {
"description": "Range start date (YYYY-MM-DD)",
"type": "string"
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"type": "array"
},
"departure_dates": {
"description": "List of specific departure dates in ISO 8601 format (YYYY-MM-DD). Use for searching multiple specific dates with OR logic. Example: [\"2025-12-15\", \"2025-12-16\", \"2025-12-17\"] for flexible date searches. Useful when user wants to check specific dates like weekends.",
"items": {
"type": "string"
},
"type": "array"
},
"destination": {
"description": "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 IATA city code : \"LHR\" for London, \"BJS\" for Beijing.",
"maxLength": 3,
"minLength": 3,
"type": "string"
},
"direct_only": {
"description": "Only show direct/nonstop flights. When true, only flights with no stops are returned. Use for fastest travel or when layovers are not desired.",
"type": "boolean"
},
"locale": {
"description": "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 user's language and location context.",
"type": "string"
},
"max_price": {
"description": "Maximum total price per person in specified currency. Helps find flights within budget. Example: 500 means flights up to $500/\u20ac500/\u00a3500 per person depending on currency.",
"exclusiveMinimum": 0,
"type": "number"
},
"origin": {
"description": "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. Example for IATA city code : \"NYC\" for New York, \"PAR\" for Paris.",
"maxLength": 3,
"minLength": 3,
"type": "string"
},
"return_date_ranges": {
"description": "List of return date ranges for flexible round-trip exploration. Use when user wants flexibility on return timing across multiple periods with OR logic. Example: [{start: \"2025-12-22\", end: \"2025-12-25\"}, {start: \"2025-12-29\", end: \"2026-01-02\"}]",
"items": {
"$ref": "#/properties/departure_date_ranges/items"
},
"type": "array"
},
"return_dates": {
"description": "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. Example: [\"2025-12-22\", \"2025-12-23\", \"2025-12-24\"]",
"items": {
"type": "string"
},
"type": "array"
},
"sort_by": {
"description": "Sort results by this criteria. Default: lowest (best deals first). Options: lowest (cheapest flights), recommendation (best overall value considering price, duration, and stops).",
"enum": [
"lowest",
"recommendation"
],
"type": "string"
},
"stay_days": {
"description": "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 getaway.",
"maximum": 365,
"minimum": 1,
"type": "integer"
},
"stay_days_range": {
"additionalProperties": false,
"description": "Flexible stay duration range. Use when user wants flexibility in trip length (e.g., \"5 to 10 days\"). Cannot be combined with exact stay_days or return_date. Example: {min: 5, max: 10}",
"properties": {
"max": {
"description": "Maximum stay duration in days",
"maximum": 365,
"type": "integer"
},
"min": {
"description": "Minimum stay duration in days",
"minimum": 1,
"type": "integer"
}
},
"required": [
"min",
"max"
],
"type": "object"
},
"trip_type": {
"description": "REQUIRED: Trip type: \"oneway\" for one-way flights or \"roundtrip\" for round-trip flights.",
"enum": [
"oneway",
"roundtrip"
],
"type": "string"
},
"user_query": {
"description": "The original natural-language user query that triggered this tool call. Used for context.",
"type": "string"
}
},
"required": [
"origin",
"destination",
"trip_type"
],
"type": "object"
},
"name": "find_flight",
"title": "find_flight"
},
{
"_meta": {
"openai/outputTemplate": "ui://widgets.gojinko.com/202512112048/destination-carousel-unified.html",
"openai/toolInvocation/invoked": "Let's Go Jinko",
"openai/toolInvocation/invoking": "Making Some Magic...",
"openai/widgetAccessible": true,
"ui": {
"csp": {
"connectDomains": [
"https://jinkotravel.com",
"https://api.mapbox.com",
"https://events.mapbox.com",
"https://checkout.stripe.com/",
"https://www.delta.com",
"https://www.united.com",
"https://www.aa.com",
"https://www.southwest.com",
"https://www.alaskaair.com",
"https://www.aircanada.com",
"https://www.jetblue.com",
"https://www.spirit.com",
"https://flights.flyfrontier.com",
"https://www.volaris.com",
"https://www.vivaaerobus.com",
"https://www.aeromexico.com",
"https://www.westjet.com",
"https://www.allegiantair.com",
"https://www.hawaiianairlines.com",
"https://flights.flyflair.com",
"https://www.ryanair.com",
"https://www.easyjet.com",
"https://www.britishairways.com",
"https://www.iberia.com",
"https://tickets.vueling.com",
"https://www.lufthansa.com",
"https://www.wizzair.com",
"https://www.jet2.com",
"https://www.airfrance.com",
"https://www.transavia.com",
"https://www.turkishairlines.com",
"https://www.klm.com",
"https://www.qatarairways.com",
"https://www.ceair.com",
"https://www.emirates.com",
"https://www.swiss.com",
"https://www.flytap.com",
"https://www.royalairmaroc.com",
"https://www.alitalia.com",
"https://www.airchina.com",
"https://www.flysas.com",
"https://www.etihad.com",
"https://www.latam.com",
"https://www.csair.com",
"https://www.austrian.com",
"https://www.airalgerie.dz",
"https://www.lot.com",
"https://www.aireuropa.com",
"https://www.airindia.com",
"https://www.virginatlantic.com",
"https://www.brusselsairlines.com",
"https://www.vietnamairlines.com",
"https://www.cathaypacific.com",
"https://www.ana.co.jp",
"https://www.avianca.com",
"https://www.finnair.com",
"https://www.tunisair.com",
"https://www.aircorsica.com",
"https://www.ethiopianairlines.com",
"https://www.airserbia.com",
"https://www.flypgs.com",
"https://www.airdolomiti.eu",
"https://www.aircaraibes.com",
"https://www.jal.com",
"https://www.valuair.com.sg",
"https://www.thaiairways.com",
"https://www.aerlingus.com",
"https://en.aegeanair.com",
"https://www.singaporeair.com",
"https://www.hahnair.com",
"https://www.airmauritius.com",
"https://www.icelandair.com",
"https://www.hainanairlines.com",
"https://www.malaysiaairlines.com",
"https://www.qantas.com",
"https://www.norwegian.com",
"https://www.kenya-airways.com",
"https://www.gulfair.com",
"https://www.airbaltic.com",
"https://www.condor.com",
"https://www.airtransat.com",
"https://www.koreanair.com",
"https://www.saudia.com",
"https://www.volotea.com",
"https://www.azoresairlines.pt",
"https://www.tarom.ro",
"https://www.rj.com",
"https://www.omanair.com",
"https://www.air-austral.com",
"https://www.luxair.lu",
"https://www.egyptair.com",
"https://www.evaair.com",
"https://www.croatiaairlines.com",
"https://www.elal.com",
"https://www.airtahitinui.com",
"https://www.xiamenair.com",
"https://www.frenchbee.com",
"https://www.flycorsair.com",
"https://gojinko.com",
"https://mcp.gojinko.com",
"https://api.gojinko.com",
"https://gojinko.com",
"https://www.gojinko.com",
"https://app.gojinko.com",
"https://widgets.gojinko.com"
],
"resourceDomains": [
"https://jinkotravel.com",
"https://api.mapbox.com/",
"https://cdn.openai.com",
"https://statics.gojinko.com",
"https://widgets.gojinko.com",
"https://gojinko.com",
"https://www.gojinko.com",
"https://app.gojinko.com"
]
},
"resourceUri": "ui://widgets.gojinko.com/202512112048/destination-carousel-unified.html"
},
"ui/resourceUri": "ui://widgets.gojinko.com/202512112048/destination-carousel-unified.html"
},
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Discover travel destinations when the user does NOT know where to go. This is a destination EXPLORATION tool.\n\nWHEN TO USE THIS TOOL (CRITICAL):\n- The user does NOT specify a destination: \"Where should I go?\", \"Best deals from NYC\"\n- The user wants inspiration based on criteria: \"Beach destinations\", \"Somewhere warm\", \"Cheap flights from SF\"\n- The user wants to compare multiple destination options from their origin\n- The user previously asked for destination recommendations and wants pricing for those options\n\nWHEN NOT TO USE THIS TOOL \u2014 USE flight_calendar INSTEAD:\n- The user specifies BOTH an origin AND a destination \u2192 use flight_calendar\n- Examples that should use flight_calendar, NOT this tool:\n \u2022 \"Flights from Paris to Barcelona\" \u2192 flight_calendar\n \u2022 \"Find me a flight from JFK to CDG\" \u2192 flight_calendar\n \u2022 \"Cheapest flight from LA to Miami in June\" \u2192 flight_calendar\n \u2022 \"Paris to BCN for a weekend in April\" \u2192 flight_calendar\n \u2022 \"What are the cheapest dates to go to NYC from Paris?\" \u2192 flight_calendar\n- If the user names a specific city/airport as destination, that means they KNOW where to go \u2192 flight_calendar\n\nIMPORTANT - DATES:\n All dates in query parameters (departure_dates, departure_date_ranges, return_dates, return_date_ranges) MUST be in the future. Never use past dates.\n Please fill as much as possible search parameters based on user intent to get best results.\n\nIMPORTANT - RE-CALL THIS TOOL when the user:\n- Asks for a different type of destination (beach, city trip, ski, etc.)\n- Asks for different dates while still exploring\n- The user is already in fullscreen mode in the widget\n\nCORE FUNCTIONALITY:\n- REQUIRED: User's origin location (LLM identifies ALL nearby airports)\n- OPTIONAL: Destination filtering by specific airports/cities OR omit for global discovery mode\n- Destination Discovery Mode: When destinations is omitted/empty, searches ALL destinations globally\n- Flexible dates and stay durations for exploring options\n- Filter by budget, direct flights preference, and locale\n- By default, please search roundtrip flights unless user specifies one-way\n\nAIRPORT IDENTIFICATION - CRITICAL:\nLLM MUST identify and recommend ALL relevant airports for user's origin location:\n- \"New York\": [\"JFK\", \"LGA\", \"EWR\"]\n- \"London\": [\"LHR\", \"LGW\", \"STN\", \"LTN\", \"LCY\"]\n- \"Paris\": [\"CDG\", \"ORY\"]\n- \"Tokyo\": [\"NRT\", \"HND\"]\n- \"Chicago\": [\"ORD\", \"MDW\"]\n- \"Los Angeles\": [\"LAX\"]\n- \"San Francisco\": [\"SFO\"]\n\nDESTINATION FILTERING - INTELLIGENT INTERPRETATION:\nDestinations can be specified using IATA airport codes OR city codes (3 letters). You can mix both types:\n- Airport codes: [\"JFK\", \"LAX\", \"LHR\"] - searches specific airports\n- City codes: [\"NYC\", \"LON\", \"PAR\"] - searches all airports in those cities\n\nDESTINATION LIST - CRITICAL:\nWhen users mention criteria that imply a type of destination, the LLM MUST generate the appropriate list:\n- \"Sunny places in winter\": [\"MIA\",\"MCO\",\"SAN\",\"PHX\",\"HNL\",\"CUN\",\"PUJ\",\"PTY\",\"LIM\",\"GIG\"]\n- \"Somewhere in Asia\": [\"NRT\",\"HND\",\"ICN\",\"PVG\",\"PEK\",\"HKG\",\"SIN\",\"BKK\",\"KUL\",\"MNL\"]\n- \"Beach destinations\": [\"MIA\",\"SAN\",\"HNL\",\"CUN\",\"PUJ\",\"SJU\",\"NAS\",\"MBJ\"]\n- \"European capitals\": [\"LHR\",\"CDG\",\"FRA\",\"MAD\",\"FCO\",\"AMS\",\"BRU\",\"VIE\",\"PRG\",\"CPH\"]\n\nIf no filtering is specified (\"anywhere\", \"surprise me\"), leave destinations empty for global discovery.\n\nTYPICAL USE CASES:\n1. \"Where should I travel from NYC next month?\" \u2192 origins: [\"JFK\",\"LGA\",\"EWR\"], destinations: []\n2. \"I want to go somewhere warm from Chicago for a week in December\" \u2192 origins: [\"ORD\",\"MDW\"], destinations: [warm destinations]\n3. \"Best weekend getaways from Boston?\" \u2192 origins: [\"BOS\"], destinations: []\n4. \"Beach vacation from Seattle in summer under $600\" \u2192 origins: [\"SEA\"], destinations: [beach destinations]\n\nIMPORTANT: Always provide ALL airports for origins to maximize search results.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"cabin_class": {
"description": "Preferred cabin class. Options: \"economy\", \"premium_economy\", \"business\", or \"first\". Filters results accordingly.",
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"type": "string"
},
"currency": {
"description": "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 that.",
"type": "string"
},
"departure_date_ranges": {
"description": "List of departure date ranges for flexible travel discovery. Use when the user mentions periods like \u201cnext month\u201d or \u201cspring.\u201d Supports multiple non-contiguous ranges (OR logic). Example: [{start: \"2025-12-10\", end: \"2025-12-15\"}, {start: \"2025-12-20\", end: \"2025-12-25\"}].",
"items": {
"additionalProperties": false,
"properties": {
"end": {
"description": "Range end date (YYYY-MM-DD)",
"type": "string"
},
"start": {
"description": "Range start date (YYYY-MM-DD)",
"type": "string"
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"type": "array"
},
"departure_dates": {
"description": "List of specific departure dates in ISO 8601 format (YYYY-MM-DD). Use for searching multiple specific dates with OR logic. Example: [\"2025-12-15\", \"2025-12-16\", \"2025-12-17\"] for flexible date searches. Useful when user wants to check specific dates like weekends.",
"items": {
"type": "string"
},
"type": "array"
},
"destinations": {
"description": "OPTIONAL. Array of destination IATA codes (3-letter uppercase), representing either airports or cities. When a city code is provided, the LLM MUST expand it to include all associated airports. Examples: [\"LHR\", \"LGW\", \"STN\", \"LTN\", \"LCY\"] for London airports; [\"CDG\", \"ORY\"] for Paris; [\"TYO\"] for all Tokyo airports. You may mix airport and city codes: [\"JFK\", \"LAX\", \"LON\", \"PAR\"]. When omitted or empty, the system searches globally to discover the best flight deals (destination discovery mode).",
"items": {
"type": "string"
},
"type": "array"
},
"direct_only": {
"description": "When true, only returns nonstop (direct) flights. Useful for avoiding layovers or minimizing total travel time.",
"type": "boolean"
},
"locale": {
"description": "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 user's language and location context.",
"type": "string"
},
"max_price": {
"description": "Maximum total price per passenger, the currency is user default currency. Filters out results exceeding the limit. Example: 500 = limit of $500/\u20ac500/\u00a3500 per person.",
"exclusiveMinimum": 0,
"type": "number"
},
"origins": {
"description": "REQUIRED. Array of origin IATA codes (3-letter uppercase), representing either airports or cities where the trip starts. The LLM MUST detect and include all relevant nearby airports or city codes based on the user\u2019s location. Examples: [\"JFK\", \"LGA\", \"EWR\"] for New York City; [\"SFO\", \"OAK\", \"SJC\"] for the San Francisco Bay Area; [\"ORD\", \"MDW\"] for Chicago; or a single city code like [\"NYC\"].",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
},
"return_date_ranges": {
"description": "List of return date ranges for flexible round-trip searches. Supports multiple return windows. Example: [{start: \"2025-12-22\", end: \"2025-12-25\"}, {start: \"2025-12-29\", end: \"2026-01-02\"}].",
"items": {
"$ref": "#/properties/departure_date_ranges/items"
},
"type": "array"
},
"return_dates": {
"description": "List of specific return dates for round-trip searches (YYYY-MM-DD). Must be after the corresponding departure dates. Supports multiple options (OR logic). Example: [\"2025-12-22\", \"2025-12-23\", \"2025-12-24\"].",
"items": {
"type": "string"
},
"type": "array"
},
"sort_by": {
"description": "Sorting preference for search results. Options: \"lowest\" (cheapest first, default) or \"recommendation\" (best overall balance of price, duration, and stops).",
"enum": [
"lowest",
"recommendation"
],
"type": "string"
},
"stay_days": {
"description": "Exact number of days to stay at the destination. Used with a departure date to automatically compute the return date. Example: 7 = one-week trip; 3 = weekend getaway.",
"maximum": 365,
"minimum": 1,
"type": "integer"
},
"stay_days_range": {
"additionalProperties": false,
"description": "Range of acceptable trip durations for flexible planning (e.g., \u201c5 to 10 days\u201d). Cannot be combined with stay_days or explicit return_date. Example: {min: 5, max: 10}.",
"properties": {
"max": {
"description": "Maximum stay duration in days",
"maximum": 365,
"type": "integer"
},
"min": {
"description": "Minimum stay duration in days",
"minimum": 1,
"type": "integer"
}
},
"required": [
"min",
"max"
],
"type": "object"
},
"trip_type": {
"description": "REQUIRED. Type of trip: \"oneway\" for single-leg flights, or \"roundtrip\" for return flights.",
"enum": [
"oneway",
"roundtrip"
],
"type": "string"
},
"user_query": {
"description": "The original natural-language user query that triggered this tool call. Used for context.",
"type": "string"
}
},
"required": [
"origins",
"trip_type"
],
"type": "object"
},
"name": "find_destination",
"title": "find_destination"
},
{
"_meta": {
"openai/outputTemplate": "ui://widgets.gojinko.com/202512112048/flight-shop-unified.html",
"openai/toolInvocation/invoked": "Fare Options Ready",
"openai/toolInvocation/invoking": "Getting fare options...",
"openai/widgetAccessible": true,
"ui": {
"csp": {
"connectDomains": [
"https://jinkotravel.com",
"https://api.mapbox.com",
"https://events.mapbox.com",
"https://checkout.stripe.com/",
"https://www.delta.com",
"https://www.united.com",
"https://www.aa.com",
"https://www.southwest.com",
"https://www.alaskaair.com",
"https://www.aircanada.com",
"https://www.jetblue.com",
"https://www.spirit.com",
"https://flights.flyfrontier.com",
"https://www.volaris.com",
"https://www.vivaaerobus.com",
"https://www.aeromexico.com",
"https://www.westjet.com",
"https://www.allegiantair.com",
"https://www.hawaiianairlines.com",
"https://flights.flyflair.com",
"https://www.ryanair.com",
"https://www.easyjet.com",
"https://www.britishairways.com",
"https://www.iberia.com",
"https://tickets.vueling.com",
"https://www.lufthansa.com",
"https://www.wizzair.com",
"https://www.jet2.com",
"https://www.airfrance.com",
"https://www.transavia.com",
"https://www.turkishairlines.com",
"https://www.klm.com",
"https://www.qatarairways.com",
"https://www.ceair.com",
"https://www.emirates.com",
"https://www.swiss.com",
"https://www.flytap.com",
"https://www.royalairmaroc.com",
"https://www.alitalia.com",
"https://www.airchina.com",
"https://www.flysas.com",
"https://www.etihad.com",
"https://www.latam.com",
"https://www.csair.com",
"https://www.austrian.com",
"https://www.airalgerie.dz",
"https://www.lot.com",
"https://www.aireuropa.com",
"https://www.airindia.com",
"https://www.virginatlantic.com",
"https://www.brusselsairlines.com",
"https://www.vietnamairlines.com",
"https://www.cathaypacific.com",
"https://www.ana.co.jp",
"https://www.avianca.com",
"https://www.finnair.com",
"https://www.tunisair.com",
"https://www.aircorsica.com",
"https://www.ethiopianairlines.com",
"https://www.airserbia.com",
"https://www.flypgs.com",
"https://www.airdolomiti.eu",
"https://www.aircaraibes.com",
"https://www.jal.com",
"https://www.valuair.com.sg",
"https://www.thaiairways.com",
"https://www.aerlingus.com",
"https://en.aegeanair.com",
"https://www.singaporeair.com",
"https://www.hahnair.com",
"https://www.airmauritius.com",
"https://www.icelandair.com",
"https://www.hainanairlines.com",
"https://www.malaysiaairlines.com",
"https://www.qantas.com",
"https://www.norwegian.com",
"https://www.kenya-airways.com",
"https://www.gulfair.com",
"https://www.airbaltic.com",
"https://www.condor.com",
"https://www.airtransat.com",
"https://www.koreanair.com",
"https://www.saudia.com",
"https://www.volotea.com",
"https://www.azoresairlines.pt",
"https://www.tarom.ro",
"https://www.rj.com",
"https://www.omanair.com",
"https://www.air-austral.com",
"https://www.luxair.lu",
"https://www.egyptair.com",
"https://www.evaair.com",
"https://www.croatiaairlines.com",
"https://www.elal.com",
"https://www.airtahitinui.com",
"https://www.xiamenair.com",
"https://www.frenchbee.com",
"https://www.flycorsair.com",
"https://gojinko.com",
"https://mcp.gojinko.com",
"https://api.gojinko.com",
"https://gojinko.com",
"https://www.gojinko.com",
"https://app.gojinko.com",
"https://widgets.gojinko.com"
],
"resourceDomains": [
"https://jinkotravel.com",
"https://api.mapbox.com/",
"https://cdn.openai.com",
"https://statics.gojinko.com",
"https://widgets.gojinko.com",
"https://gojinko.com",
"https://www.gojinko.com",
"https://app.gojinko.com"
]
},
"resourceUri": "ui://widgets.gojinko.com/202512112048/flight-shop-unified.html"
},
"ui/resourceUri": "ui://widgets.gojinko.com/202512112048/flight-shop-unified.html"
},
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Live flight tool with two modes. EACH CALL HITS LIVE PRICING \u2014 not for loose or flexible date queries (use flight_calendar for those).\n\nMODE 1 \u2014 search: route + exact single dates + optional filters (most common first-call case)\n- Use when the user has committed to ONE specific route AND a specific departure date AND a specific return date.\n- Supports filters on the same call: direct_only, cabin_class, max_price, include_carriers, exclude_carriers, origin_type, destination_type.\n- Examples:\n \u2713 \"Paris to NYC, June 17 to June 26\" \u2192 { search: { origin: \"PAR\", destination: \"NYC\", departure_date: \"2026-06-17\", return_date: \"2026-06-26\" } }\n \u2713 \"Paris to Rome June 19 to 27, direct only, business class\" \u2192 { search: { origin: \"PAR\", destination: \"ROM\", departure_date: \"2026-06-19\", return_date: \"2026-06-27\", direct_only: true, cabin_class: \"business\" } }\n \u2713 \"JFK \u2192 CDG August 5 to 12, Air France only, under $800\" \u2192 { search: { origin: \"JFK\", origin_type: \"airport\", destination: \"CDG\", destination_type: \"airport\", departure_date: \"2026-08-05\", return_date: \"2026-08-12\", include_carriers: [\"AF\"], max_price: 800 } }\n- Only ONE departure_date and ONE return_date. No arrays, no ranges, no multi-city.\n\nMODE 2 \u2014 price_check: confirm live fares for a specific flight\n- Use after the user picks a flight returned by flight_calendar or find_destination. Pass the offer_token.\n- Schema: { \"price_check\": { \"offer_token\": \"...\" } }\n\nWHEN NOT TO USE (route to flight_calendar instead):\n- \"Cheapest flight in June\" (loose month window)\n- \"Paris to NYC next week\" (loose window \u2014 7 days)\n- \"Best weekend to fly to Rome in spring\" (flexible dates)\n- Any query with a date RANGE that implies multiple candidate departure/return pairs\n- Multi-city itineraries\n\nNOTE: \"June 19 to 27\" / \"between the 19 and 27\" with a specific round-trip intent counts as\nexact single dates (dep=19, ret=27) \u2014 use flight_search, not flight_calendar.\n\nWIDGET:\nThe flight-shop widget renders fare options with Refundable/Changeable flags and a\n\"Book\" button that launches the traveler modal. Both search and price_check modes\npopulate this widget.\n\nIMPORTANT:\n- Prices are subject to change until booking is confirmed\n- Offer tokens may expire after some time\n- Always inform users about fare differences (refundable vs non-refundable, baggage, etc.)\n- Per-person totals apply unless stated otherwise\n",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"currency": {
"description": "ISO 4217 currency code for displaying prices (e.g. \"EUR\", \"USD\", \"GBP\"). Infer from user context.",
"type": "string"
},
"locale": {
"description": "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.",
"type": "string"
},
"price_check": {
"additionalProperties": false,
"description": "Get confirmed live fares for a specific flight offer. Returns fare brands with trip_item_token for booking.",
"properties": {
"offer_token": {
"description": "offer_token from flight_calendar or find_destination results. Uniquely identifies a specific flight offer for live pricing.",
"minLength": 1,
"type": "string"
}
},
"required": [
"offer_token"
],
"type": "object"
},
"search": {
"additionalProperties": false,
"description": "Live search for a single precise route+dates pair with optional filters (direct_only, cabin_class, max_price, include_carriers, exclude_carriers). Use only when the user has committed to ONE specific route and BOTH departure date and return date \u2014 no ranges, no multi-city, no date arrays. For loose/flexible queries use flight_calendar.",
"properties": {
"cabin_class": {
"description": "Cabin class filter. Omit (default) for economy. Use when the user says \"business class\", \"first class\", etc.",
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"type": "string"
},
"departure_date": {
"description": "Single departure date (YYYY-MM-DD). Exactly one date \u2014 no arrays or ranges.",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"destination": {
"description": "Destination IATA city code (e.g. MIL, BCN, TYO) or airport code (e.g. MXP, BCN, NRT). City codes preferred.",
"maxLength": 3,
"minLength": 3,
"type": "string"
},
"destination_type": {
"description": "How to interpret destination: \"city\" (default) searches all airports; \"airport\" restricts to that specific airport.",
"enum": [
"city",
"airport"
],
"type": "string"
},
"direct_only": {
"description": "If true, only return non-stop (direct) flights. Use when the user says \"direct only\" / \"non-stop\" / \"no layovers\".",
"type": "boolean"
},
"exclude_carriers": {
"description": "IATA 2-letter marketing carrier codes to exclude (blacklist). Example: [\"RY\",\"FR\"]. Use when the user says \"no Ryanair\", \"avoid budget airlines\", etc.",
"items": {
"maxLength": 2,
"minLength": 2,
"type": "string"
},
"type": "array"
},
"include_carriers": {
"description": "IATA 2-letter marketing carrier codes to include (whitelist). Example: [\"AF\",\"KL\"]. Use when the user says \"Air France only\", \"fly Delta\", etc.",
"items": {
"maxLength": 2,
"minLength": 2,
"type": "string"
},
"type": "array"
},
"max_price": {
"description": "Upper bound on the total fare in the requested currency. Use when the user gives a budget like \"under $500\".",
"exclusiveMinimum": 0,
"type": "number"
},
"origin": {
"description": "Origin IATA city code (e.g. PAR, NYC, LON) or airport code (e.g. CDG, JFK, LHR). City codes preferred \u2014 they search all airports in the city.",
"maxLength": 3,
"minLength": 3,
"type": "string"
},
"origin_type": {
"description": "How to interpret origin: \"city\" (default) searches all airports in the city; \"airport\" restricts to that specific airport.",
"enum": [
"city",
"airport"
],
"type": "string"
},
"return_date": {
"description": "Single return date (YYYY-MM-DD). Exactly one date \u2014 no arrays or ranges. Required for roundtrip (the common case).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
}
},
"required": [
"origin",
"destination",
"departure_date",
"return_date"
],
"type": "object"
},
"traveler_counts": {
"additionalProperties": false,
"description": "Traveler counts. Defaults to 1 adult.",
"properties": {
"adults": {
"default": 1,
"description": "Number of adult travelers (12+ years)",
"maximum": 9,
"minimum": 1,
"type": "integer"
},
"children": {
"default": 0,
"description": "Number of child travelers (2-11 years)",
"maximum": 8,
"minimum": 0,
"type": "integer"
},
"infants": {
"default": 0,
"description": "Number of infant travelers (under 2 years)",
"maximum": 4,
"minimum": 0,
"type": "integer"
}
},
"type": "object"
}
},
"type": "object"
},
"name": "flight_search",
"title": "flight_search"
},
{
"_meta": {
"openai/outputTemplate": "ui://widgets.gojinko.com/202512112048/trip-builder-unified.html",
"openai/toolInvocation/invoked": "Trip Updated",
"openai/toolInvocation/invoking": "Updating trip...",
"openai/widgetAccessible": true,
"ui": {
"csp": {
"connectDomains": [
"https://jinkotravel.com",
"https://api.mapbox.com",
"https://events.mapbox.com",
"https://checkout.stripe.com/",
"https://www.delta.com",
"https://www.united.com",
"https://www.aa.com",
"https://www.southwest.com",
"https://www.alaskaair.com",
"https://www.aircanada.com",
"https://www.jetblue.com",
"https://www.spirit.com",
"https://flights.flyfrontier.com",
"https://www.volaris.com",
"https://www.vivaaerobus.com",
"https://www.aeromexico.com",
"https://www.westjet.com",
"https://www.allegiantair.com",
"https://www.hawaiianairlines.com",
"https://flights.flyflair.com",
"https://www.ryanair.com",
"https://www.easyjet.com",
"https://www.britishairways.com",
"https://www.iberia.com",
"https://tickets.vueling.com",
"https://www.lufthansa.com",
"https://www.wizzair.com",
"https://www.jet2.com",
"https://www.airfrance.com",
"https://www.transavia.com",
"https://www.turkishairlines.com",
"https://www.klm.com",
"https://www.qatarairways.com",
"https://www.ceair.com",
"https://www.emirates.com",
"https://www.swiss.com",
"https://www.flytap.com",
"https://www.royalairmaroc.com",
"https://www.alitalia.com",
"https://www.airchina.com",
"https://www.flysas.com",
"https://www.etihad.com",
"https://www.latam.com",
"https://www.csair.com",
"https://www.austrian.com",
"https://www.airalgerie.dz",
"https://www.lot.com",
"https://www.aireuropa.com",
"https://www.airindia.com",
"https://www.virginatlantic.com",
"https://www.brusselsairlines.com",
"https://www.vietnamairlines.com",
"https://www.cathaypacific.com",
"https://www.ana.co.jp",
"https://www.avianca.com",
"https://www.finnair.com",
"https://www.tunisair.com",
"https://www.aircorsica.com",
"https://www.ethiopianairlines.com",
"https://www.airserbia.com",
"https://www.flypgs.com",
"https://www.airdolomiti.eu",
"https://www.aircaraibes.com",
"https://www.jal.com",
"https://www.valuair.com.sg",
"https://www.thaiairways.com",
"https://www.aerlingus.com",
"https://en.aegeanair.com",
"https://www.singaporeair.com",
"https://www.hahnair.com",
"https://www.airmauritius.com",
"https://www.icelandair.com",
"https://www.hainanairlines.com",
"https://www.malaysiaairlines.com",
"https://www.qantas.com",
"https://www.norwegian.com",
"https://www.kenya-airways.com",
"https://www.gulfair.com",
"https://www.airbaltic.com",
"https://www.condor.com",
"https://www.airtransat.com",
"https://www.koreanair.com",
"https://www.saudia.com",
"https://www.volotea.com",
"https://www.azoresairlines.pt",
"https://www.tarom.ro",
"https://www.rj.com",
"https://www.omanair.com",
"https://www.air-austral.com",
"https://www.luxair.lu",
"https://www.egyptair.com",
"https://www.evaair.com",
"https://www.croatiaairlines.com",
"https://www.elal.com",
"https://www.airtahitinui.com",
"https://www.xiamenair.com",
"https://www.frenchbee.com",
"https://www.flycorsair.com",
"https://gojinko.com",
"https://mcp.gojinko.com",
"https://api.gojinko.com",
"https://gojinko.com",
"https://www.gojinko.com",
"https://app.gojinko.com",
"https://widgets.gojinko.com"
],
"resourceDomains": [
"https://jinkotravel.com",
"https://api.mapbox.com/",
"https://cdn.openai.com",
"https://statics.gojinko.com",
"https://widgets.gojinko.com",
"https://gojinko.com",
"https://www.gojinko.com",
"https://app.gojinko.com"
]
},
"resourceUri": "ui://widgets.gojinko.com/202512112048/trip-builder-unified.html"
},
"ui/resourceUri": "ui://widgets.gojinko.com/202512112048/trip-builder-unified.html"
},
"annotations": {
"destructiveHint": true,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false
},
"description": "Unified tool for managing a trip (shopping cart). Actions are determined by which objects you provide.\n\nSCHEMA:\n{\n trip_id?: string, // Existing trip ID (omit to create new)\n version?: number, // Current version for concurrency control\n offer_id?: string, // (Legacy) Offer ID \u2014 now auto-encoded into trip_item_token by flight_search\n add_item?: { ... }, // Add a flight to the trip\n remove_item?: { ... }, // Remove an item from the trip\n upsert_travelers?: { ... }, // Set travelers (replaces all)\n idempotency_key?: string // Prevent duplicate processing\n}\n\nACTIONS:\n\n1. ADD ITEM (add_item object \u2014 offer_id is auto-encoded into trip_item_token by flight_search):\n{\n \"add_item\": {\n \"trip_item_token\": \"offer__1:0-2-0\", // Required: from flight_search (contains encoded offer_id)\n \"traveler_ids\": [\"traveler_1\", \"traveler_2\"] // Optional: associate travelers\n }\n}\n\n2. REMOVE ITEM (remove_item object):\n{\n \"trip_id\": \"trip_xxx\",\n \"version\": 2,\n \"remove_item\": {\n \"item_id\": \"item_123\" // From trip.trip_items[].id\n }\n}\n\n3. UPSERT TRAVELERS (upsert_travelers object):\n{\n \"trip_id\": \"trip_xxx\",\n \"version\": 2,\n \"upsert_travelers\": {\n \"travelers\": [\n { \"traveler_id\": \"saved_1\", \"is_lead\": true }, // Pre-saved traveler\n { \"identity\": { ... } } // Or inline details\n ],\n \"contact\": { // Optional trip contact\n \"email\": \"john@example.com\",\n \"phone\": \"+1-555-123-4567\"\n }\n }\n}\n\nTRAVELER ENTRY OPTIONS:\n\u2022 { traveler_id: \"id\" } - Use pre-saved traveler\n\u2022 { traveler_id: \"id\", is_lead: true } - Pre-saved as lead\n\u2022 { identity: {...}, passport?: {...} } - Inline details\n\nWORKFLOW:\n1. flight_calendar \u2192 Returns flights with offer_token\n2. flight_search \u2192 Returns fare options with trip_item_token (offer_id encoded inside)\n3. trip(add_item={...}) \u2192 Adds flight, returns trip + saved travelers\n4. trip(upsert_travelers={...}) \u2192 Sets travelers on trip\n5. checkout_trip \u2192 Completes booking\n\nRETURNS:\n\u2022 trip: Complete trip object with items, travelers, totals\n\u2022 saved_travelers: Available pre-saved travelers for selection\n\u2022 recommended_products: Upsell opportunities (hotels, cars, insurance)\n\u2022 actions_performed: Which actions were executed\n\u2022 trip_item_id: ID of newly added item (if add_item performed)\n\nEXAMPLES:\n\n1. Add flight to new trip:\n{\n \"add_item\": {\n \"trip_item_token\": \"offer__1:0-2-0\"\n }\n}\n\n2. Add flight to existing trip:\n{\n \"trip_id\": \"trip_xxx\",\n \"version\": 1,\n \"add_item\": {\n \"trip_item_token\": \"offer__1:0-2-0\"\n }\n}\n\n3. Set travelers (pre-saved):\n{\n \"trip_id\": \"trip_xxx\",\n \"version\": 2,\n \"upsert_travelers\": {\n \"travelers\": [\n { \"traveler_id\": \"traveler_1\", \"is_lead\": true },\n { \"traveler_id\": \"traveler_2\" }\n ]\n }\n}\n\n4. Set travelers (inline):\n{\n \"trip_id\": \"trip_xxx\",\n \"version\": 2,\n \"upsert_travelers\": {\n \"travelers\": [\n {\n \"identity\": {\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"date_of_birth\": \"1990-05-15\",\n \"gender\": \"MALE\",\n \"passenger_type\": \"ADULT\"\n },\n \"is_lead\": true\n }\n ],\n \"contact\": {\n \"email\": \"john@example.com\",\n \"phone\": \"+1-555-123-4567\"\n }\n }\n}\n\n5. Remove item:\n{\n \"trip_id\": \"trip_xxx\",\n \"version\": 3,\n \"remove_item\": {\n \"item_id\": \"item_123\"\n }\n}\n\n6. Add flight AND set travelers (combined):\n{\n \"add_item\": {\n \"trip_item_token\": \"offer__1:0-2-0\"\n },\n \"upsert_travelers\": {\n \"travelers\": [\n { \"traveler_id\": \"traveler_1\", \"is_lead\": true }\n ]\n }\n}\n}",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"add_item": {
"additionalProperties": false,
"description": "Add a flight or item to the trip using a trip_item_token from flight_search.",
"properties": {
"traveler_ids": {
"description": "Traveler IDs to associate with the added item",
"items": {
"type": "string"
},
"type": "array"
},
"trip_item_token": {
"description": "Token from flight_search fare options. Contains encoded flight/fare information.",
"type": "string"
}
},
"required": [
"trip_item_token"
],
"type": "object"
},
"idempotency_key": {
"description": "Idempotency key to prevent duplicate processing",
"type": "string"
},
"offer_id": {
"description": "Deprecated: offer_id is now encoded into trip_item_token by flight_search. Only needed for legacy tokens without encoded offer_id.",
"type": "string"
},
"payment_type": {
"description": "Payment flow type: \"checkout\" for Stripe Checkout (default), \"intent\" for Payment Intent.",
"enum": [
"checkout",
"intent"
],
"type": "string"
},
"remove_item": {
"additionalProperties": false,
"description": "Remove an item from the trip by its ID.",
"properties": {
"item_id": {
"description": "ID of the trip item to remove. Get this from trip.trip_items[].id",
"type": "string"
}
},
"required": [
"item_id"
],
"type": "object"
},
"select_ancillaries": {
"additionalProperties": false,
"description": "Select ancillaries (bags, seats, meals) for a quoted trip item. Uses full-replacement semantics \u2014 send all desired selections.",
"properties": {
"item_id": {
"description": "ID of the trip item to select ancillaries for. Must be a quoted item. Get from trip.trip_items[].id",
"type": "string"
},
"selections": {
"description": "Ancillary selections. Full replacement \u2014 send all desired selections each time. Get offer_ids from trip_item.available_ancillaries[].offer_id",
"items": {
"additionalProperties": false,
"properties": {
"category": {
"description": "Ancillary category (BAGGAGE, SEAT, MEAL, etc.)",
"type": "string"
},
"journey_ref_id": {
"description": "Journey reference ID (for journey-scoped ancillaries)",
"type": "string"
},
"offer_id": {
"description": "Ancillary offer_id from available_ancillaries on the trip item",
"type": "string"
},
"pax_ref_id": {
"description": "Passenger reference ID (for per-pax ancillaries)",
"type": "string"
},
"quantity": {
"description": "Quantity (defaults to 1)",
"type": "integer"
},
"segment_ref_ids": {
"description": "Segment reference IDs (for segment-scoped ancillaries)",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"offer_id"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"item_id",
"selections"
],
"type": "object"
},
"trip_id": {
"description": "ID of an existing trip. If not provided, a new trip will be created.",
"type": "string"
},
"upsert_travelers": {
"additionalProperties": false,
"description": "Set travelers on the trip. Replaces all existing travelers (idempotent operation).",
"properties": {
"contact": {
"additionalProperties": false,
"description": "Contact information for the trip lead",
"properties": {
"email": {
"description": "Email address for booking confirmations",
"format": "email",
"type": "string"
},
"phone": {
"description": "Phone number with country code (e.g., \"+1-555-123-4567\")",
"type": "string"
}
},
"required": [
"email",
"phone"
],
"type": "object"
},
"travelers": {
"description": "List of travelers for the trip. Replaces all existing travelers (idempotent).",
"items": {
"additionalProperties": false,
"properties": {
"contact": {
"additionalProperties": false,
"description": "Contact information",
"properties": {
"email": {
"description": "Email address",
"format": "email",
"type": "string"
},
"phone": {
"description": "Phone number with country code",
"type": "string"
}
},
"type": "object"
},
"identity": {
"additionalProperties": false,
"description": "Traveler identity information. Required if traveler_id is not provided.",
"properties": {
"date_of_birth": {
"description": "Date of birth (YYYY-MM-DD)",
"type": "string"
},
"first_name": {
"description": "First name as on travel documents",
"type": "string"
},
"gender": {
"description": "Gender",
"enum": [
"MALE",
"FEMALE"
],
"type": "string"
},
"last_name": {
"description": "Last name as on travel documents",
"type": "string"
},
"middle_name": {
"description": "Middle name",
"type": "string"
},
"nationality": {
"description": "Nationality (ISO 3166-1 alpha-2 country code)",
"type": "string"
},
"passenger_type": {
"description": "Passenger type based on age",
"enum": [
"ADULT",
"CHILD",
"LAP_INFANT",
"SEATED_INFANT"
],
"type": "string"
},
"title": {
"description": "Title (Mr, Mrs, Ms, etc.)",
"type": "string"
}
},
"required": [
"first_name",
"last_name",
"date_of_birth",
"gender",
"passenger_type"
],
"type": "object"
},
"is_lead": {
"description": "Whether this traveler is the lead/primary contact",
"type": "boolean"
},
"passport": {
"additionalProperties": false,
"description": "Passport information for international travel",
"properties": {
"expiry_date": {
"description": "Passport expiration date (YYYY-MM-DD)",
"type": "string"
},
"issuing_country": {
"description": "Issuing country (ISO 3166-1 alpha-2 code)",
"type": "string"
},
"number": {
"description": "Passport number",
"type": "string"
}
},
"required": [
"number",
"expiry_date",
"issuing_country"
],
"type": "object"
},
"traveler_id": {
"description": "ID of a pre-saved traveler. If provided, fetches traveler details from storage.",
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
"required": [
"travelers"
],
"type": "object"
}
},
"type": "object"
},
"name": "trip",
"title": "trip"
},
{
"_meta": {
"openai/outputTemplate": "ui://widgets.gojinko.com/202512112048/trip-builder-unified.html",
"openai/toolInvocation/invoked": "Booking Updated",
"openai/toolInvocation/invoking": "Processing booking...",
"openai/widgetAccessible": true,
"ui": {
"csp": {
"connectDomains": [
"https://jinkotravel.com",
"https://api.mapbox.com",
"https://events.mapbox.com",
"https://checkout.stripe.com/",
"https://www.delta.com",
"https://www.united.com",
"https://www.aa.com",
"https://www.southwest.com",
"https://www.alaskaair.com",
"https://www.aircanada.com",
"https://www.jetblue.com",
"https://www.spirit.com",
"https://flights.flyfrontier.com",
"https://www.volaris.com",
"https://www.vivaaerobus.com",
"https://www.aeromexico.com",
"https://www.westjet.com",
"https://www.allegiantair.com",
"https://www.hawaiianairlines.com",
"https://flights.flyflair.com",
"https://www.ryanair.com",
"https://www.easyjet.com",
"https://www.britishairways.com",
"https://www.iberia.com",
"https://tickets.vueling.com",
"https://www.lufthansa.com",
"https://www.wizzair.com",
"https://www.jet2.com",
"https://www.airfrance.com",
"https://www.transavia.com",
"https://www.turkishairlines.com",
"https://www.klm.com",
"https://www.qatarairways.com",
"https://www.ceair.com",
"https://www.emirates.com",
"https://www.swiss.com",
"https://www.flytap.com",
"https://www.royalairmaroc.com",
"https://www.alitalia.com",
"https://www.airchina.com",
"https://www.flysas.com",
"https://www.etihad.com",
"https://www.latam.com",
"https://www.csair.com",
"https://www.austrian.com",
"https://www.airalgerie.dz",
"https://www.lot.com",
"https://www.aireuropa.com",
"https://www.airindia.com",
"https://www.virginatlantic.com",
"https://www.brusselsairlines.com",
"https://www.vietnamairlines.com",
"https://www.cathaypacific.com",
"https://www.ana.co.jp",
"https://www.avianca.com",
"https://www.finnair.com",
"https://www.tunisair.com",
"https://www.aircorsica.com",
"https://www.ethiopianairlines.com",
"https://www.airserbia.com",
"https://www.flypgs.com",
"https://www.airdolomiti.eu",
"https://www.aircaraibes.com",
"https://www.jal.com",
"https://www.valuair.com.sg",
"https://www.thaiairways.com",
"https://www.aerlingus.com",
"https://en.aegeanair.com",
"https://www.singaporeair.com",
"https://www.hahnair.com",
"https://www.airmauritius.com",
"https://www.icelandair.com",
"https://www.hainanairlines.com",
"https://www.malaysiaairlines.com",
"https://www.qantas.com",
"https://www.norwegian.com",
"https://www.kenya-airways.com",
"https://www.gulfair.com",
"https://www.airbaltic.com",
"https://www.condor.com",
"https://www.airtransat.com",
"https://www.koreanair.com",
"https://www.saudia.com",
"https://www.volotea.com",
"https://www.azoresairlines.pt",
"https://www.tarom.ro",
"https://www.rj.com",
"https://www.omanair.com",
"https://www.air-austral.com",
"https://www.luxair.lu",
"https://www.egyptair.com",
"https://www.evaair.com",
"https://www.croatiaairlines.com",
"https://www.elal.com",
"https://www.airtahitinui.com",
"https://www.xiamenair.com",
"https://www.frenchbee.com",
"https://www.flycorsair.com",
"https://gojinko.com",
"https://mcp.gojinko.com",
"https://api.gojinko.com",
"https://gojinko.com",
"https://www.gojinko.com",
"https://app.gojinko.com",
"https://widgets.gojinko.com"
],
"resourceDomains": [
"https://jinkotravel.com",
"https://api.mapbox.com/",
"https://cdn.openai.com",
"https://statics.gojinko.com",
"https://widgets.gojinko.com",
"https://gojinko.com",
"https://www.gojinko.com",
"https://app.gojinko.com"
]
},
"resourceUri": "ui://widgets.gojinko.com/202512112048/trip-builder-unified.html"
},
"ui/resourceUri": "ui://widgets.gojinko.com/202512112048/trip-builder-unified.html"
},
"annotations": {
"destructiveHint": true,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false
},
"description": "Unified tool for booking a trip. Actions are determined by which object you provide.\n\nSCHEMA:\n{\n create?: { // Initiate booking\n trip_id: string, // Required: ID of the trip to book\n buyer_contact?: { // Optional: buyer contact info\n email: string,\n phone?: string\n }\n },\n status?: { // Check booking status\n booking_id: string // Required: ID of the booking to check\n },\n idempotency_key?: string // Prevent duplicate processing\n}\n\nACTIONS:\n\n1. CREATE BOOKING (create object):\nQuotes the trip and returns a Stripe Checkout URL for payment authorization.\n{\n \"create\": {\n \"trip_id\": \"trip_xxx\"\n }\n}\n\nReturns:\n{\n \"checkout_session\": {\n \"id\": \"cs_xxx\",\n \"url\": \"https://checkout.stripe.com/...\", // Open this URL for payment\n \"expires_at\": \"2026-01-08T15:30:00Z\"\n },\n \"pending_booking\": {\n \"id\": \"bkg_xxx\",\n \"status\": \"awaiting_payment\",\n \"trip_id\": \"trip_xxx\"\n }\n}\n\n2. CHECK STATUS (status object):\nRetrieves booking status. If payment is authorized but fulfillment hasn't started,\nautomatically triggers fulfillment.\n{\n \"status\": {\n \"booking_id\": \"bkg_xxx\"\n }\n}\n\nReturns: Full booking object with status, items, passengers, totals, payment info.\n\nPREREQUISITES:\n\u2022 Trip must have at least one item (use trip tool with add_item)\n\u2022 Trip must have travelers assigned (use trip tool with upsert_travelers)\n\u2022 Trip must pass validation\n\nWORKFLOW:\n1. flight_calendar \u2192 offer_token\n2. flight_search \u2192 trip_item_token\n3. trip(add_item={...}) \u2192 trip created\n4. trip(upsert_travelers={...}) \u2192 travelers set\n5. book(create={trip_id}) \u2192 checkout URL\n6. User completes payment via checkout URL\n7. book(status={booking_id}) \u2192 booking confirmation\n\nEXAMPLES:\n\n1. Create booking:\n{\n \"create\": {\n \"trip_id\": \"trip_xyz789\"\n }\n}\n\n2. Create booking with buyer contact:\n{\n \"create\": {\n \"trip_id\": \"trip_xyz789\",\n \"buyer_contact\": {\n \"email\": \"john@example.com\",\n \"phone\": \"+1-555-123-4567\"\n }\n }\n}\n\n3. Check booking status:\n{\n \"status\": {\n \"booking_id\": \"bkg_xxx\"\n }\n}",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"create": {
"additionalProperties": false,
"description": "Initiate booking for a trip. Quotes the trip and returns a Stripe Checkout URL for payment.",
"properties": {
"buyer_contact": {
"additionalProperties": false,
"description": "Buyer contact information. If omitted, uses lead traveler contact.",
"properties": {
"email": {
"description": "Email address for booking confirmations",
"format": "email",
"type": "string"
},
"phone": {
"description": "Phone number with country code",
"type": "string"
}
},
"required": [
"email"
],
"type": "object"
},
"trip_id": {
"description": "ID of the trip to book. The trip must have items and travelers.",
"type": "string"
}
},
"required": [
"trip_id"
],
"type": "object"
},
"idempotency_key": {
"description": "Idempotency key to prevent duplicate processing",
"type": "string"
},
"status": {
"additionalProperties": false,
"description": "Check the status of an existing booking. If payment is authorized, triggers fulfillment automatically.",
"properties": {
"booking_id": {
"description": "ID of the booking to check status for.",
"type": "string"
}
},
"required": [
"booking_id"
],
"type": "object"
}
},
"type": "object"
},
"name": "book",
"title": "book"
}
]
}
},
"requested_protocol_version": "2025-06-18",
"resumed": true,
"session_id_present": true,
"transport": "streamable-http",
"url": "https://mcp.gojinko.com"
},
"latency_ms": 132.07,
"status": "ok"
},
"step_up_auth_probe": {
"details": {
"auth_required_checks": [],
"broad_scopes": [],
"challenge_headers": [],
"minimal_scope_documented": false,
"oauth_present": false,
"scope_specificity_ratio": 0.0,
"step_up_signals": [],
"supported_scopes": []
},
"latency_ms": null,
"status": "missing"
},
"tool_snapshot_probe": {
"details": {
"reason": "no_tools"
},
"latency_ms": null,
"status": "missing"
},
"tools_list": {
"details": {
"error": "Client error '400 Bad Request' for url 'https://mcp.gojinko.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400",
"headers": {
"content-type": "application/json; charset=utf-8",
"strict-transport-security": "max-age=31536000; includeSubDomains; preload"
},
"http_status": 400,
"payload": {},
"url": "https://mcp.gojinko.com"
},
"latency_ms": 69.71,
"status": "error"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json",
"strict-transport-security": "max-age=31536000; includeSubDomains; preload"
},
"bad_protocol_payload": {
"error": {
"code": -32000,
"message": "Bad Request: Unsupported protocol version: 1999-99-99 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)"
},
"id": null,
"jsonrpc": "2.0"
},
"bad_protocol_status_code": 400,
"delete_error": null,
"delete_status_code": 200,
"expired_session_error": null,
"expired_session_status_code": 404,
"issues": [
"missing_protocol_header"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-06-18",
"session_id_present": true,
"transport": "streamable-http"
},
"latency_ms": 59.59,
"status": "warning"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": false,
"live_probe": "not_executed",
"sample_target": null
},
"initialize_capability_keys": [
"resources",
"tools"
],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 400,
"probe_status": "missing"
}
},
"latency_ms": 40.34,
"status": "missing"
}
},
"failures": {
"oauth_authorization_server": {
"reason": "no_authorization_server"
},
"oauth_protected_resource": {
"error": "Client error '404 Not Found' for url 'https://mcp.gojinko.com/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.gojinko.com/.well-known/oauth-protected-resource"
},
"openid_configuration": {
"reason": "no_authorization_server"
},
"server_card": {
"error": "Client error '404 Not Found' for url 'https://mcp.gojinko.com/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.gojinko.com/.well-known/mcp/server-card.json"
},
"tools_list": {
"error": "Client error '400 Bad Request' for url 'https://mcp.gojinko.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400",
"headers": {
"content-type": "application/json; charset=utf-8",
"strict-transport-security": "max-age=31536000; includeSubDomains; preload"
},
"http_status": 400,
"payload": {},
"url": "https://mcp.gojinko.com"
}
},
"remote_url": "https://mcp.gojinko.com",
"server_card_payload": null,
"server_identifier": "com.gojinko.mcp/jinko"
}
Known versions
0.0.1
Validation history
7 day score delta
n/a
30 day score delta
n/a
Recent healthy ratio
0%
Freshness
0.0h
| Timestamp | Status | Score | Latency | Tools |
|---|---|---|---|---|
| May 04, 2026 05:53:54 AM UTC | Failing | 58.5 | 972.1 ms | 0 |
| May 04, 2026 05:49:04 AM UTC | Failing | 58.5 | 1697.4 ms | 0 |
| May 04, 2026 05:43:02 AM UTC | Failing | 58.5 | 959.4 ms | 0 |
| May 04, 2026 05:39:20 AM UTC | Failing | 58.2 | 884.9 ms | 0 |
| May 04, 2026 05:36:29 AM UTC | Failing | 58.2 | 1081.3 ms | 0 |
| May 04, 2026 05:31:58 AM UTC | Failing | 58.2 | 1089.7 ms | 0 |
| May 04, 2026 05:28:26 AM UTC | Failing | 58.2 | 921.0 ms | 0 |
| May 04, 2026 05:24:36 AM UTC | Failing | 58.2 | 960.2 ms | 0 |
Validation timeline
| Validated | Summary | Score | Protocol | Auth mode | Tools | High-risk tools | Changes |
|---|---|---|---|---|---|---|---|
| May 04, 2026 05:53:54 AM UTC | Failing | 58.5 | 2025-06-18 | public | 0 | 0 | none |
| May 04, 2026 05:49:04 AM UTC | Failing | 58.5 | 2025-06-18 | public | 0 | 0 | none |
| May 04, 2026 05:43:02 AM UTC | Failing | 58.5 | 2025-06-18 | public | 0 | 0 | none |
| May 04, 2026 05:39:20 AM UTC | Failing | 58.2 | 2025-06-18 | public | 0 | 0 | none |
| May 04, 2026 05:36:29 AM UTC | Failing | 58.2 | 2025-06-18 | public | 0 | 0 | none |
| May 04, 2026 05:31:58 AM UTC | Failing | 58.2 | 2025-06-18 | public | 0 | 0 | none |
| May 04, 2026 05:28:26 AM UTC | Failing | 58.2 | 2025-06-18 | public | 0 | 0 | none |
| May 04, 2026 05:24:36 AM UTC | Failing | 58.2 | 2025-06-18 | public | 0 | 0 | none |
| May 04, 2026 05:20:47 AM UTC | Failing | 58.2 | 2025-06-18 | public | 0 | 0 | none |
| May 04, 2026 05:16:58 AM UTC | Failing | 58.2 | 2025-06-18 | public | 0 | 0 | none |
| May 04, 2026 05:12:21 AM UTC | Failing | 58.2 | 2025-06-18 | public | 0 | 0 | none |
| May 04, 2026 05:07:07 AM UTC | Failing | 58.2 | 2025-06-18 | public | 0 | 0 | none |
Recent validation runs
| Started | Status | Summary | Latency | Checks |
|---|---|---|---|---|
| May 04, 2026 05:53:53 AM UTC | Completed | Failing | 972.1 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 04, 2026 05:49:02 AM UTC | Completed | Failing | 1697.4 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 04, 2026 05:43:01 AM UTC | Completed | Failing | 959.4 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 04, 2026 05:39:19 AM UTC | Completed | Failing | 884.9 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 04, 2026 05:36:27 AM UTC | Completed | Failing | 1081.3 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 04, 2026 05:31:57 AM UTC | Completed | Failing | 1089.7 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 04, 2026 05:28:25 AM UTC | Completed | Failing | 921.0 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 04, 2026 05:24:35 AM UTC | Completed | Failing | 960.2 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 04, 2026 05:20:46 AM UTC | Completed | Failing | 972.9 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 04, 2026 05:16:57 AM UTC | Completed | Failing | 1033.9 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |