Skip to main content
Glama

Lovie Company Formation

Set Company Address

formation_set_company_address

Sets the company's business address. Always present the user with BOTH options: pass source = ADDRESS_SOURCE_OWN with their own address, which may be anywhere in the world, or source = ADDRESS_SOURCE_NEED_ASSISTANCE to give them Lovie's virtual mailbox (a real US address Lovie provides). Offer the mailbox proactively whenever the user has no address or prefers not to use a home/personal one. Every address needs a street, city, and ISO country code; a US address also needs its state and a 5-digit ZIP.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sourceNo
addressNo
formationIdYesUUID value wrapper.
physicalBusinessAddressNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
formationIdNo
needsVirtualPostMailNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed18 schema fields changed
    • removedInput schema / properties / address / properties / city / pattern
      Removed value: -"^[A-Za-z .'-]+$"
    • removedInput schema / properties / address / properties / country / maxLength
      Removed value: -2
    • changedInput schema / properties / address / properties / country / pattern
      Previous value: -"^[A-Z]*$"New value: +"^[A-Z]{2}$"
    • removedInput schema / properties / address / properties / county / pattern
      Removed value: -"^[A-Za-z ]*$"
    • changedInput schema / properties / address / properties / state / maxLength
      Previous value: -50New value: +100
    • removedInput schema / properties / address / properties / state / minLength
      Removed value: -1
    • removedInput schema / properties / address / properties / state / pattern
      Removed value: -"^[A-Za-z ]+$"
    • removedInput schema / properties / address / properties / street1 / pattern
      Removed value: -"^[A-Za-z0-9 .,#/-]+$"
    • removedInput schema / properties / address / properties / street2 / pattern
      Removed value: -"^[A-Za-z0-9 .,#/-]*$"
    • changedInput schema / properties / address / properties / zipCode / maxLength
      Previous value: -10New value: +20
    • removedInput schema / properties / address / properties / zipCode / minLength
      Removed value: -5
    • removedInput schema / properties / address / properties / zipCode / pattern
      Removed value: -"^[0-9]{5}(-[0-9]{4})?$"
    • addedInput schema / properties / physicalBusinessAddress
      Added value: +{
      +  "properties": {
      +    "city": {
      +      "maxLength": 100,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "country": {
      +      "pattern": "^[A-Z]{2}$",
      +      "type": "string"
      +    },
      +    "county": {
      +      "maxLength": 100,
      +      "type": "string"
      +    },
      +    "state": {
      +      "maxLength": 100,
      +      "type": "string"
      +    },
      +    "street1": {
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "street2": {
      +      "maxLength": 200,
      +      "type": "string"
      +    },
      +    "zipCode": {
      +      "maxLength": 20,
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • changedInput schema / properties / source / enum
      Previous value: -[
      -  "ADDRESS_SOURCE_UNSPECIFIED",
      -  "ADDRESS_SOURCE_OWN",
      -  "ADDRESS_SOURCE_NEED_ASSISTANCE"
      -]New value: +[
      +  "ADDRESS_SOURCE_OWN",
      +  "ADDRESS_SOURCE_NEED_ASSISTANCE"
      +]
    • addedOutput schema / properties / formationId / anyOf
      Added value: +[
      +  {
      +    "description": "UUID value wrapper.",
      +    "properties": {
      +      "value": {
      +        "format": "uuid",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / formationId / description
      Removed value: -"UUID value wrapper."
    • removedOutput schema / properties / formationId / properties
      Removed value: -{
      -  "value": {
      -    "format": "uuid",
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / formationId / type
      Removed value: -"object"
  2. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds real context beyond that: what the virtual mailbox actually is (a real US address Lovie provides) and the required address fields. It does not say whether an existing address is overwritten, which is the one remaining behavioral gap.

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 purpose, then the source guidance, then the field requirements. Dense but each sentence carries actionable information; only the address-requirement sentence is slightly mechanical.

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

Completeness3/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 no explanation, and the mutation's safety profile is in annotations. But with 25% schema coverage and two nested address objects, the description covers only one of them, leaving an agent unsure when `physicalBusinessAddress` applies versus `address`.

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

Parameters3/5

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

Schema coverage is only 25%, so the description must compensate, and it does well for `source` (explaining both enum values, which the schema leaves bare) and for `address` (street, city, ISO country code; US needs state and 5-digit ZIP). However, `formationId` and especially `physicalBusinessAddress`—a whole second nested address object—are never explained, leaving the distinction between `address` and `physicalBusinessAddress` ambiguous.

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

Purpose4/5

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

States a specific verb and resource ('Sets the company's business address'), which is clear against siblings like formation_set_company_name and formation_set_state. It does not explicitly differentiate itself from those siblings, but the resource is 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 conditional guidance: present BOTH source options, use ADDRESS_SOURCE_OWN for a worldwide personal address, and offer ADDRESS_SOURCE_NEED_ASSISTANCE proactively 'whenever the user has no address or prefers not to use a home/personal one.' The when and when-not conditions are both spelled out.

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.