Skip to main content
Glama

Check Formation Progress

get_company_onboarding_status
Read-only

Canonical 'where am I?' entry point — call this ONCE per user session, at the start, right after the OAuth handshake. No arguments required; customerId is read from the bearer. The response's suggestedNextStep (the tool to call next) and nextActionInput (a {tool, arguments} template: call that tool and replace every in arguments with the user's real answer) drive the next call.

DO NOT call this before every formation call. Each formation tool's response already carries nextAction + nextActionInput — trust that and move on. Re-calling get_company_onboarding_status between steps just adds latency and burns rate limit without changing the plan.

Only call this AGAIN when one of these is true: (a) the user returns mid-flow after a long pause and asks 'where are we?', (b) you need to verify state after an unexpected error or a failed call, or (c) the user switched companies via switch_active_company. Outside those cases, treat the first call's state as authoritative for the rest of the session.

Derivation mirrors /web's onboarding routing (Company.gql): each step is marked completed when its corresponding Company / Customer field is populated. If the customer has no active company yet (post-OAuth, pre-formation), the response points at start_formation.

If the response contains error: true or suggestedNextStep looks inconsistent with the user's actual progress (e.g. you just saved the company name but the response steers you back to it), the upstream data fetch likely transiently failed. Wait ~10 seconds and call this tool again before deciding what to do next — do NOT redo earlier steps the user has already completed.

Input Schema

NameRequiredDescriptionDefault
contextNoOptional, for analytics only. In one sentence, why you are calling this tool and how it serves the user's goal. Describe the purpose in general terms: never include names, emails, phone numbers, addresses, IDs or any other personal details.
llm_modelNoOptional, for analytics only. Your exact model identifier from your system prompt (e.g. "claude-opus-4-8"), or "unknown" if unsure. Never guess.

Output Schema

NameRequiredDescriptionDefault
emailNoCustomer email
errorNotrue if an error occurred
messageNoHuman-readable status or instruction
blockersNoPrerequisites still unmet, in flow order. Same vocabulary as the `missing` array submit_for_review returns. Empty array when formation is fully complete.
lastNameNoCustomer last name
companyIdNoCustomer's active formation company ID, if any
firstNameNoCustomer first name
customerIdNoCustomer ID from the OAuth bearer
nextActionNoImperative for the agent — follow verbatim. Null when formation is complete.
dashboardUrlNoURL to doola dashboard
nextQuestionNoQuestion to ask the user verbatim before the next formation call. Null when no question is needed.
completedStepsNoList of steps inferred as completed from the Company / Customer state
nextActionInputNo{tool, arguments} template for the resume point's call. Replace every <placeholder> in arguments with the user's real answer. Null when formation is complete.
hasActiveSessionNofalse if the request was not authenticated (defense in depth)
suggestedNextStepNoThe next formation step to call; null when formation is complete.
countryOfResidenceNoISO Alpha-3 country code if set

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and openWorldHint, yet the description adds real operational context: implicit auth via bearer (no customerId argument), the derivation rule (steps complete when Company/Customer fields are populated), the effect of re-calling (rate limit), and an error-recovery protocol (error:true or inconsistent suggestedNextStep → wait ~10s and retry rather than redo steps). This is well past what annotations 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?

Front-loaded with the core instruction and no filler, but the central 'do not call between steps' rule is stated twice (paragraph two and again in the 'only call AGAIN when…' paragraph), which costs a bit of length without adding information.

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?

Even though an output schema exists, the description explains the two fields that actually drive agent behavior (suggestedNextStep and the {tool, arguments} placeholder template in nextActionInput) and covers the failure path. Nothing an agent needs to act correctly on this response 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% and the only params are analytics-only (context, llm_model), so the schema carries that burden. The description adds the one non-obvious semantic point — no arguments are needed because customerId is derived from the bearer token — which prevents an agent from hunting for a customer identifier.

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 role — the canonical 'where am I?' entry point for formation/onboarding progress — and immediately disambiguates from the sibling formation tools by saying their responses already carry nextAction. An agent can tell instantly what this returns and why it differs from start_formation, save_company_details, or switch_active_company.

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?

Explicit when-to-call (once per session, right after OAuth), when NOT to call (between formation steps, with a stated reason: latency and rate-limit burn), and an exhaustive enumeration of the three re-call conditions. It also names the downstream alternative (start_formation) for the pre-formation case.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.