Job Tourism¶
job_tourism — G6 Tourism job agent.
Cluster: Job Agents | Type: component | MCP Tools: 26
Overview¶
Domain-specialist job agent for travel and tourism professionals including tour operators, travel agents, and destination managers. Plans personalised itineraries, books accommodation, researches destinations, creates travel guides, manages reservations, and analyses visitor demand and seasonal patterns — all within G6's safety-bounded, audit-trailed JobAgentBlock framework.
When to use:
- Building detailed multi-day travel itineraries tailored to traveller preferences and budget
- Researching destination options including entry requirements, climate, and local attractions
- Creating structured destination guides or tour product descriptions
- Analysing booking demand patterns to optimise seasonal pricing and inventory
Example:
from mvp.job_tourism import JobTourismBlock, JobTourismInput
block = JobTourismBlock()
result = block.infer(JobTourismInput(
task="Plan a 10-day cultural itinerary through Japan for a couple celebrating their 25th anniversary, budget AUD 12,000",
context={"interests": ["temples", "cuisine", "art", "onsens"], "travel_style": "mid-luxury", "departure": "SYD"},
))
# result.ok → True; result.value → JobTourismOutput with result, artifacts
Works well with: job_framework, job_hospitality, job_services
Public API¶
JobTourismInput(JobInput)¶
Input for the Tourism job agent.
JobTourismOutput(JobOutput)¶
JobTourismBlock(JobAgentBlock)¶
G6 Tourism job agent — Tier 1 block with MCP delegation.
| Field | Type | Default |
|---|---|---|
name | str | 'job_tourism' |
sector | SectorClassification | field(default_factory=lambda: _SECTOR) |
toolkit | ToolkitSpec \| None | field(default_factory=lambda: JOB_TOOLKITS.get('tourism')) |
mcp_module | str | 'mvp.job_tourism.tourism_mcp.server' |
capabilities | ClassVar[set[type]] | {Extensible, HumanLearnable, Collaborative, ProblemSolvable, KnowledgeGrounded, Memorable, AgentCommunicable} |
Methods:
infer(data)¶
MCPJobTourismInput(BaseModel)¶
Input to JobTourismMCPBlock — 26-op dispatch.
| Field | Type | Default |
|---|---|---|
op | Literal['plan_itinerary', 'book_accommodation', 'research_destination', 'create_guide', 'manage_reservation', 'analyze_demand', 'evaluate_destination', 'assess_pricing', 'benchmark_reviews', 'audit_bookings', 'create_proposal', 'review_deliverable', 'delegate_task', 'report_status', 'request_feedback', 'store_artifact', 'retrieve_artifact', 'list_artifacts', 'search_artifacts', 'archive', 'plan_sprint', 'track_progress', 'reflect_on_outcome', 'get_capabilities', 'info', 'list_patterns'] | required |
task | str | '' |
context | dict[str, Any] | Field(default_factory=dict) |
parameters | dict[str, Any] | Field(default_factory=dict) |
artifact_id | str | '' |
query | str | '' |
run_mode | str | 'beta' |
reviewer_signature | str | '' |
MCPJobTourismOutput(BaseModel)¶
Output from JobTourismMCPBlock.
| Field | Type | Default |
|---|---|---|
op | str | required |
completion_state | Literal['verified', 'qualified-draft', 'blocked-escalated'] | 'qualified-draft' |
result | str | '' |
artifacts | list[dict[str, Any]] | Field(default_factory=list) |
records | list[dict[str, Any]] | Field(default_factory=list) |
message | str | '' |
count | int | 0 |
found | bool | False |
metadata | dict[str, Any] | Field(default_factory=dict) |
degraded | bool | False |
degradation_reason | str \| None | None |
TourismStore(JobStore)¶
SQLite store for the Tourism job agent.
Constructor:
| Parameter | Type | Default |
|---|---|---|
db_path | str | ':memory:' |
Methods:
save_destination(destination_id: str = '', name: str = '', country: str = '', region: str = '', destination_type: str = '', area_km2: float = 0, annual_visitors: int = 0, carrying_capacity: float = 0, status: str = 'active', data: dict | None = None) -> str¶
get_destination(destination_id: str) -> dict | None¶
list_destinations(country: str = '') -> list[dict]¶
save_package(destination_id: str = '', name: str = '', duration_days: int = 1, tier: str = 'standard', selling_price: float = 0, total_cost: float = 0, gross_margin_pct: float = 0, status: str = 'active', data: dict | None = None) -> str¶
get_packages(destination_id: str = '') -> list[dict]¶
save_booking(package_id: str = '', destination_id: str = '', guest_name: str = '', guest_count: int = 1, check_in: str = '', check_out: str = '', total_price: float = 0, status: str = 'confirmed', data: dict | None = None) -> str¶
get_bookings(destination_id: str = '', status: str = '') -> list[dict]¶
get_booking_revenue(destination_id: str = '') -> float¶
save_review(booking_id: str = '', destination_id: str = '', rating: float = 0, sentiment: str = '', text_excerpt: str = '', data: dict | None = None) -> str¶
get_reviews(destination_id: str = '') -> list[dict]¶
get_avg_rating(destination_id: str) -> float¶
save_event(destination_id: str = '', name: str = '', event_type: str = '', expected_attendance: int = 0, estimated_revenue: float = 0, estimated_cost: float = 0, status: str = 'planned', data: dict | None = None) -> str¶
get_events(destination_id: str = '') -> list[dict]¶
save_risk_assessment(destination_id: str = '', risk_category: str = '', composite_score: float = 0, advisory_level: str = '', data: dict | None = None) -> str¶
get_risk_assessments(destination_id: str) -> list[dict]¶
save_sustainability_report(destination_id: str = '', total_carbon_tonnes: float = 0, certification_ready: bool = False, overall_score: float = 0, data: dict | None = None) -> str¶
get_sustainability_reports(destination_id: str) -> list[dict]¶
JobTourismMCPBlock(AIBlock[MCPJobTourismInput, MCPJobTourismOutput, dict])¶
26-op MCP block for the Tourism job agent.
| Field | Type | Default |
|---|---|---|
name | str | 'job_tourism_mcp' |
state | dict | field(default_factory=dict) |
db_path | str | ':memory:' |
resource_bounds | ResourceBounds | field(default_factory=ResourceBounds) |
usage | ResourceUsage | field(default_factory=ResourceUsage) |
Methods:
infer(data: MCPJobTourismInput) -> Result[MCPJobTourismOutput]¶
Functions¶
assemble_review_text(output: Any) -> str¶
Collect the reviewable free text from a JobTourismOutput (duck-typed).
assess_tourism_output(output: Any, qa_block: Any | None = None, generate: Any | None = None) -> GroundedRunResult¶
Run grounded four-valued QA over a tourism output.
MCP Tools¶
| Operation | Source |
|---|---|
plan_itinerary | tourism_mcp |
book_accommodation | tourism_mcp |
research_destination | tourism_mcp |
create_guide | tourism_mcp |
manage_reservation | tourism_mcp |
analyze_demand | tourism_mcp |
evaluate_destination | tourism_mcp |
assess_pricing | tourism_mcp |
benchmark_reviews | tourism_mcp |
audit_bookings | tourism_mcp |
create_proposal | tourism_mcp |
review_deliverable | tourism_mcp |
delegate_task | tourism_mcp |
report_status | tourism_mcp |
request_feedback | tourism_mcp |
store_artifact | tourism_mcp |
retrieve_artifact | tourism_mcp |
list_artifacts | tourism_mcp |
search_artifacts | tourism_mcp |
archive | tourism_mcp |
plan_sprint | tourism_mcp |
track_progress | tourism_mcp |
reflect_on_outcome | tourism_mcp |
get_capabilities | tourism_mcp |
info | tourism_mcp |
list_patterns | tourism_mcp |