Start
The first tool the agent calls whenever a user expresses a cost-cutting goal or open-ended platform question in a fresh session. Probes the environment (Reporter, Receiver, Retriever, SIEM) and returns a full orientation envelope:
- tier detected (dev / reporter / receiver / retriever)
- capability_summary (what is and isn't available without further setup)
- action_menu with 6 items, each gated by the detected tier
- must_render_verbatim — pre-rendered markdown the agent surfaces as-is
- must_ask_user — the numbered question the user must answer before any follow-up tool runs
- forbidden_next_actions — tools the agent must not call until the user picks
Example
You
where do I start?
Log10x
Log10x orientation
Tier: Reporter — cost attribution metrics flowing; in-path actions not yet wired.
Journey: [x] 1. Visibility [ ] 2. Attribution [ ] 3. Mitigation [ ] 4. Overflow [ ] 5. Commitment
What would you like to do? Pick a number: 1. Show me what cutting costs would look like (estimate before action) 2. Investigate a specific cost spike or top-N pattern right now 3. Fetch back events from your overflow bucket (incident / audit / debugging) 4. Deploy the Receiver so 10x can compact / sample / drop in-flight 5. Set up the overflow bucket (your own S3); diverts noisy patterns out of the SIEM for cost savings, events stay recoverable 6. Just orient me, explain what 10x does and what I should ask next
(Pick a number before I run any other tool.)
More to ask
- "orient me — first session"
- "I want to cut my Splunk bill"
- "what can 10x do?"
Prerequisites
None. The tool degrades gracefully when no environment is configured.
Schema and samples
Input schema
Agent-facing JSON Schema (the canonical shape the MCP server publishes via tools/list):
{
"type": "object",
"properties": {
"intent_hint": {
"type": "string",
"enum": [
"cost",
"forensic",
"install",
"orient"
],
"description": "Optional hint at what brought the user here. `cost` = wants to cut/save bill; `forensic` = wants to read back the offloaded/overflow cohort from the customer-owned S3 bucket; `install` = wants to deploy; `orient` = first-time session, open-ended. When omitted, the tool treats it as `orient`."
},
"session_state": {
"type": "string",
"enum": [
"fresh",
"midway",
"returning"
],
"description": "Optional caller hint at where the user is in the session. `fresh` (default when omitted) = first message of a new chat, emit the full orientation envelope. `midway` = the agent has already surfaced the orientation envelope this session and the user is mid-flow, emit a short \"already oriented, proceeding\" envelope. `returning` = treated as `fresh` because the menu / journey phase may have shifted since the last session."
}
},
"additionalProperties": false
}
Source: src/tools/log10x-start.ts.
Output schema
The data block inside the StructuredOutput envelope:
interface ToolData {
tier: 'dev' | 'reporter' | 'receiver' | 'retriever';
siem_detected: string | null;
capability_summary: {
cost_attribution_available: boolean;
compact_installable: boolean;
tier_down_available: boolean;
forensic_query_available: boolean;
offload_ready: boolean;
siem_query_available: boolean;
receiver_discrimination_uncertain: boolean;
};
action_menu: Array<{
action: string;
label: string;
applicable: boolean;
gated_reason?: string;
routes_to: string;
}>;
journey_phases: Array<{
phase: number;
name: string;
description: string;
current_status: 'complete' | 'in_progress' | 'not_started' | 'blocked_by_prior_phase';
}>;
must_render_verbatim: string;
must_ask_user: { question: string; options: string[] };
forbidden_next_actions: string[];
intent_hint: 'cost' | 'forensic' | 'install' | 'orient';
}
Envelope-level fields the agent should also read: summary.headline (1-line answer), actions[] (next-call chain hints as {tool, args, reason}), schema_epoch (engine-ID stability boundary).