Skip to main content
Glama
log-10x

Log10x MCP Server

Official
by log-10x

POC from local logs (kubectl)

log10x_poc_from_local
Read-only

Run a log-cost-optimization POC using local files, directories, or kubectl pod logs without credentials. Returns a markdown report with sample composition, pricing-based savings, and top log patterns.

Instructions

Run a log-cost-optimization POC entirely from local log sources — pass path for one log file (wrapper-normalized) or paths for files, directories and globs; kubectl samples pod logs; docker and journald to follow. No log-analyzer credentials required. Use when the prospect has no SIEM connection or has not yet shared API keys. Returns a synchronous markdown report with: (a) sample composition table — top-N pods by byte volume; the prospect must confirm the sample looks like their production mix, (b) industry-pricing matrix — projected savings at Datadog / Splunk / CloudWatch / Sumo / Elastic / OpenSearch list prices, NOT a prediction of any specific bill, (c) top patterns in the kubectl-sourced sample. For native exclusion configs, paste-ready Receiver YAML, and the full 9-section report tied to a specific log analyzer's actual GB-billed volume, run log10x_poc_from_siem once credentials are available. No automatic fallthrough: this tool is invoked explicitly. If log10x_poc_from_siem failed on missing credentials, the calling LLM should ask the user before re-invoking with this tool — local-source framing is genuinely different from SIEM-attached framing and silent fallthrough would be a bait-and-switch. REQUIRES a local engine: the tenx binary on PATH, or Docker with LOG10X_TENX_MODE=docker. No log-analyzer credentials and no deployment are needed, but without an engine this returns an error rather than a report. Pass target_percent_reduction as a whole-number percent (e.g. 40 for 40%) to get a feasibility verdict against that target. Two modes, and the agent should name whichever the user's phrasing invites. Run normally, this tool reads local files but the server around it still has network. Run inside the FENCED profile (TENX_AIRGAPPED=true, --network none, the log10x/poc image) it is the same analysis with no network at all, and its output carries its own docker inspect proof. log10x_emit_sample_plan produces the sample for that mode from the user's own analyzer. Offer it; do not ask which one first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathNoOne local log file to analyse (source=`file`). Wrapped JSONL is normalized so the engine patterns payloads, not wrappers. For many files or globs use `paths` instead.
siemNoThe destination SIEM, used for the report header chip and command selection. When absent the analysis assumes CloudWatch and the report labels the assumption.
pathsNoRequired for `source: file`: files, directories, or glob patterns (`*`, `**`, `?`) to sample, e.g. `["/var/log/app/*.log", "./bundle/**"]`. A directory is read one level deep; use `dir/**` for the tree.
sourceNoWhere to pull log lines from. `kubectl` samples pod logs; `file` samples local logs — pass `paths` (files, directories, globs) or `path` (one file; fluentd/k8s/docker-wrapped JSONL is detected and normalized before the engine sees it). `docker` and `journald` are follow-up work.kubectl
windowNoHow far back to read per pod (`source: kubectl`). For `source: file` this is the time span you declare the sampled file tails to cover — it drives the daily projection, so set it if you know it. Accepts `1h`, `24h`, etc. Default `1h`.1h
max_podsNoCap on number of pods sampled. Default 20.
workloadNoForwarder workload name (daemonset/deployment) for the apply commands. Not guessed when absent.
forwarderNoForwarder in the pipeline (fluentd, fluent-bit, filebeat, logstash, otel-collector, vector, hec). Used to pick verified apply/undo commands. Not guessed when absent — the report says commands are unavailable.
namespaceNoKubernetes namespace to sample from (`source: kubectl` only). Pass `*` to sample across all namespaces. Default `default`.default
allow_lossyNoPermit sample/drop (lossy) to close a keep-everything shortfall. Default false: the plan stops at the keep-everything ceiling and reports the gap. Only set after the user explicitly chooses loss.
pin_patternsNoAdvanced — most customers will not need this. Map of pattern_hash to action for rare per-pattern overrides within a pod / source. Applied AFTER pin_services.
pin_servicesNoPrimary per-pod/source override surface. Map of pod / source name to action. Pins are applied AFTER the destination default and AFTER exception_services. Feasibility reruns with the pins; max_achievable shifts and reason cites the pins.
per_pod_limitNoCap on log lines pulled per pod. Default 5000.
budget_gb_monthlyNoVOLUME BUDGET: keep projected monthly ingest at or under this many GB/mo. BYTE accounting: tier_down keeps every byte and is excluded from the ladder for this target. Sample scaled to a 30-day month before solving. Mutually exclusive with target_percent_reduction and budget_usd_monthly.
budget_usd_monthlyNoDOLLAR BUDGET: keep the projected monthly bill on the assumed SIEM at or under this $/mo. The sample is scaled to a 30-day month (kubectl window, or file timestamp span) before solving, so the budget and the bill share a denominator. Mutually exclusive with target_percent_reduction and budget_gb_monthly.
exception_servicesNoServices / pods flagged by the customer to stay in the log analyzer with full retention (action=pass). Their bytes are subtracted from the achievable reduction pool used for the feasibility verdict. Matched case-insensitively against the pod / source name.
report_annotationsNoOptional one-sentence annotations keyed by evidence statement identifier, rendered under the matching action. Hard cap 140 chars each; over-cap or unknown-hash input refuses the render (nothing is truncated).
retriever_installedNoWhether the prospect will install the S3 retriever. Gates the offload rung of the plan ladder: without it offloaded events would be unreachable, so the plan stops at the in-SIEM levers and the gap names "install the retriever" as the lossless remedy. Set from conversation.
target_percent_reductionNoCustomer-specified target reduction percent. If absent, POC produces a recommendation-only output. If present, POC produces a feasibility verdict + a pre-deploy commitment artifact stub the agent can surface alongside the per-pod savings matrix. The cap CSV is attached by a later change.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNo
toolYes
viewNosummary
imagesNo
actionsNo
summaryYes
warningsNo
truncatedNo
next_cursorNo
render_hintNo
generated_atYes
schema_epochYes
schema_versionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.30.7

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, and the description adds substantial behavior beyond them: it requires a local engine (tenx on PATH or Docker with LOG10X_TENX_MODE=docker) and errors without one, needs no analyzer credentials, returns a synchronous markdown report whose sections are enumerated, and supports a fenced airgapped mode. That is rich context the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the local-vs-SIEM routing are front-loaded, and most sentences carry operational weight. It runs long and slips into agent-directed phrasing ("Offer it; do not ask which one first") and some repetition, but for a 19-parameter tool with two runtime modes the length is largely earned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 19 params, nested objects, enums, an output schema, and a mode split, the description covers environment prerequisites, credential-free operation, error behavior, report contents, and the sibling alternative. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all 19 parameters and baseline would be 3. The description nonetheless adds selection semantics — path vs paths, kubectl-sourced vs file-sourced sampling, and that target_percent_reduction is a whole-number percent (e.g. 40 for 40%) — which meaningfully helps invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: runs a log-cost-optimization POC entirely from local log sources, itemizing the input modes (path, paths, kubectl/docker/journald). It explicitly names and contrasts the sibling log10x_poc_from_siem, so an agent can route between them without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ("Use when the prospect has no SIEM connection or has not yet shared API keys"), when-not (no automatic fallthrough; ask the user before re-invoking after a SIEM-credential failure), and names the alternative tool and the condition that selects it. This is about as complete as usage guidance gets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.