Skip to main content
Glama
log-10x

Log10x MCP Server

Official

Sign in (complete)

log10x_signin_complete
Idempotent

Completes Log10x sign-in by polling the browser device flow or validating a pasted API key, then saves the resolved API key for the MCP server.

Instructions

Step 2 of the Log10x sign-in chain. Two mutually-exclusive paths controlled by which argument is passed. (a) { device_code: "<...>" }: finishes the browser flow that log10x_signin_start began. The model should call this AUTOMATICALLY right after log10x_signin_start returns, passing back the opaque device_code from that response unchanged. Polls Auth0's /oauth/token until the user confirms the device authorization in their browser, then exchanges the Auth0 access token for a long-lived Log10x API key. (b) { api_key: "<key>" }: pasted-key path, no browser. Validates the key against /api/v1/user and saves it. Pass exactly one of device_code or api_key; both or neither is rejected with a clear error. Either path writes the resolved API key to ~/.log10x/credentials (mode 0600), hot-reloads the MCP's env list in-process, and (if LOG10X_API_KEY is set in the host config and would override the new file) clears that env var in-process and tells the user to remove it from their host config to make the change permanent.

Input Schema

NameRequiredDescriptionDefault
api_keyNoLog10x API key to sign in with directly (no browser). Validated against /api/v1/user before saving. Use this when the user already has a key from console.log10x.com → Profile → API Settings, or when issued out-of-band by a workspace admin. Mutually exclusive with `device_code`.
device_codeNoThe opaque device_code returned by `log10x_signin_start`. Pass it back unchanged. The tool polls Auth0 for the access token, then exchanges it for a long-lived Log10x API key. Mutually exclusive with `api_key`.
wait_secondsNoMax seconds to poll for browser confirmation (only used when device_code is passed). Default 600.

Output 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 only declare readOnlyHint=false, openWorldHint=true, idempotentHint=true. The description adds substantial behavior beyond that: polling Auth0's /oauth/token, token exchange for a long-lived key, writing credentials to ~/.log10x/credentials at mode 0600, in-process env hot-reload, and clearing an overriding LOG10X_API_KEY with a user instruction. That is a rich disclosure of side effects and auth mechanics.

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?

Front-loaded with the chain position, then cleanly split into (a)/(b) paths with a closing statement of shared side effects. Dense and long for one paragraph, but nearly every clause carries distinct behavioral information rather than restating the schema.

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?

An output schema exists, so return values need not be described; the description instead covers the things that matter for a stateful auth tool: which argument selects which flow, error on invalid argument combinations, and the persistent/hot-reload consequences. 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 baseline is 3, but the description adds real value: it states the mutual-exclusion contract and its enforcement ('both or neither is rejected with a clear error'), and clarifies that device_code must be passed back unchanged and that wait_seconds only applies to the device_code path. This goes beyond the per-field schema text.

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 (complete the Log10x sign-in) and immediately positions itself as 'Step 2 of the Log10x sign-in chain', explicitly naming the sibling log10x_signin_start it follows. The two-path structure (device_code vs api_key) makes the tool's scope unambiguous.

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-call guidance ('call this AUTOMATICALLY right after log10x_signin_start returns') and routes each path precisely: browser flow vs pasted-key. It also names the rejection condition ('pass exactly one... both or neither is rejected'), so there is no inference required.

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