Skip to main content
Glama

The Pillar

Server Details

Find and lease ad windows and city billboards on The Pillar, a 3D tower. Paid monthly on Stripe.

Glama couldn't complete the latest health check. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.2/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct action: browsing availability (find_windows), fetching one listing by id (get_window), retrieving price tables (get_prices), initiating a lease (start_lease), and polling lease status (check_lease). Although find_windows and get_prices both surface prices, their purposes (availability vs. price structure) are clearly separated in the descriptions.

Naming Consistency5/5

All five tools follow a consistent snake_case verb_noun pattern: check_lease, find_windows, get_prices, get_window, start_lease. The verbs (check, find, get, start) are conventional and readable, with no mixed conventions.

Tool Count5/5

Five tools is well-scoped for a niche ad-space leasing domain, covering discovery, detail, pricing, initiation, and status without redundancy. Every tool earns its place; none feels extraneous or missing.

Completeness4/5

The set covers the core lease lifecycle: discover available windows, inspect a listing, see prices, start a lease, and check its status. Minor gaps exist—there is no way to list all leases for an email or cancel/retry a refused ad—but agents can work around these via leaseId and website-derived data.

Available Tools

5 tools
check_leaseCheck a leaseA
Read-only
Inspect

Where a lease stands: awaiting_payment, in_review (paid, a person checks it first), live, refused (nothing charged), rejected_refunded, refunded (the slot was taken while paying), expired (the link ran out unpaid) or ended, with a plain message.

ParametersJSON Schema
NameRequiredDescriptionDefault
leaseIdYesThe leaseId from start_lease

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYeslive = lit; in_review = paid, a person checks it first; refunded / rejected_refunded = money returned
leaseIdYes
messageYes
pageUrlYes
windowIdYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuine value beyond that by explaining what each status means (e.g. 'refused (nothing charged)', 'expired (the link ran out unpaid)') and noting the response carries 'a plain message'.

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?

It is a single front-loaded sentence that leads with the core purpose ('Where a lease stands'). The dense parenthetical enumeration is long but every clause earns its place by disambiguating a status value.

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

Completeness4/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-value structure need not be explained, and the description still conveys the state space and the accompanying message. For a one-parameter read tool this is essentially complete.

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 100% and the single leaseId parameter is documented in the schema ('The leaseId from start_lease'). The description adds no additional parameter detail, so the baseline 3 applies when the schema carries the semantics.

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?

The description states a clear read purpose ('Where a lease stands') and enumerates the exact status values, so an agent knows it retrieves lease state. It doesn't explicitly contrast with siblings, but the siblings (find_windows, get_prices, get_window, start_lease) are distinct enough that 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 Guidelines3/5

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

There is no explicit when-to-use statement, but the workflow link is implied through the schema's 'leaseId from start_lease' and the state vocabulary (awaiting_payment, live, expired). The agent can infer this is a post-start_lease status check, though polling timing or alternatives are never stated.

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

find_windowsFind free windowsA
Read-only
Inspect

List the free ad windows on the tower and the free city billboards, with monthly prices. Tower windows come first (floor 1 up, the cheapest floors first), then billboards (the most prominent first): use kind to get only one of them, and maxPrice to cap the monthly price. Any floor, face or spot filter returns tower windows only. Pages hold up to 100 items; when next isn't null, pass it as cursor for the next page.

ParametersJSON Schema
NameRequiredDescriptionDefault
faceNo
kindNowindow = on the tower, billboard = in the city around it
spotNoCorner windows cost 35% more
floorNoOne floor, 1 to 80 (higher floors cost more)
limitNoItems per page, 1 to 100 (default 20)
cursorNoThe next value from the previous page
floorMaxNo
floorMinNo
maxPriceNoHighest monthly price in US dollars, e.g. 20

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextYesPass as `cursor` for the next page; null on the last page
itemsYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds real behavior beyond them: result ordering (tower windows floor 1 up cheapest first, then billboards by prominence), the asymmetric filter behavior (floor/face/spot return windows only), and pagination semantics (up to 100 items, pass next as cursor). These are exactly the non-obvious traits an agent needs.

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

Conciseness5/5

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

Front-loads what is returned and in what order, then filters, then pagination — three dense sentences with no filler or restated title text.

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

Completeness4/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 shape need not be explained; ordering, filter interaction and pagination are all covered. The only gap is the floorMin/floorMax pair, whose range semantics are unexplained in both description and schema.

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?

With 67% schema coverage and 9 params, the description usefully adds kind, maxPrice and cursor usage plus the filter-scoping rule that floor/face/spot apply to windows only. floorMin/floorMax and face/spot semantics are left to the schema (or undocumented), so it is helpful but not exhaustive.

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?

Opens with a specific verb and resource: 'List the free ad windows on the tower and the free city billboards, with monthly prices.' It states both the entities covered and the returned attribute (price), which separates it from the singular get_window and from get_prices.

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

Usage Guidelines4/5

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

Gives concrete operating guidance: 'use kind to get only one of them', 'maxPrice to cap the monthly price', and the important rule that floor/face/spot filters restrict results to tower windows. It lacks an explicit when-not-to-use or a named alternative among check_lease/get_prices/get_window, so it stops short of a 5.

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

get_pricesGet pricesA
Read-only
Inspect

Every floor's monthly price for a middle and a corner window, and the price range of city billboards, in US cents. The listed price is exactly what Stripe charges.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
billingYes
windowsYes
currencyYes
windowRangeYes
billboardRangeYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds genuinely new behavioral facts beyond the structured fields: prices are denominated in US cents and equal exactly what Stripe charges, which tells the agent the values are authoritative and need no conversion.

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?

Two sentences, no filler, with the scope of returned data front-loaded before the pricing caveat. Slightly noun-phrase-heavy rather than action-oriented, which costs a point but wastes nothing.

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?

For a zero-parameter read-only tool with an output schema, everything the agent needs is present: the annotations carry the safety profile, the output schema carries the return shape, and the description supplies the unit and billing-source semantics. No material gap remains.

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?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify, and it correctly avoids inventing filtering options.

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?

The description states precisely what data the tool yields: per-floor monthly prices for middle and corner windows plus city billboard price ranges. The verb is implied rather than stated, and it never differentiates itself from siblings like get_window or find_windows, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives such as check_lease or get_window. Usage is only inferable from the noun phrase describing the returned data.

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

get_windowGet one windowA
Read-only
Inspect

One window or billboard by id ("F47-S3" is floor 47, south face, column 3; "B-1234" is a city billboard): its monthly price and whether it can be leased now. When it can't, reason says why: taken (lit by a brand), reserved (paid, in review), paused, prize (a game prize, only its winner can lease it) or crown (never sold).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWindow or billboard id, e.g. "F47-S3" or "B-1234"

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemYes
reasonYesWhy it can't be leased: taken (lit), reserved (paid, in review), paused, prize (only its winner), crown (never sold)
availableYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=true and openWorldHint=false; the description goes well beyond that by enumerating the five unavailable states (taken, reserved, paused, prize, crown) and explaining the domain meaning of each, including that 'prize' is winner-only and 'crown' is never sold. That is substantive behavioral context an agent cannot get from structured fields.

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 verb/resource and return values, with the state explanations following efficiently. The second sentence is dense but every clause (each state's meaning) carries information; minor run-on structure keeps it from a 5.

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?

For a one-parameter read tool with an output schema and read-only annotations, the description covers what is needed: id format, return content, and the semantics of the reason codes the output will contain. Nothing required to call 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% and the id example is already in the schema, so the baseline is 3; however, the description decodes the id grammar ('F47-S3' = floor 47, south face, column 3; 'B-1234' = city billboard), adding real semantic meaning beyond the schema's terse example.

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?

Names a specific verb and resource ('one window or billboard by id') and states precisely what is returned: monthly price and current leaseability. It is clearly distinguishable from siblings like find_windows (search) and get_prices (pricing) because it is a single-entity id lookup.

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

Usage Guidelines3/5

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

Usage is implied by 'by id' — the agent understands it must already have an id, which suggests find_windows as the prerequisite — but no sibling tool is named and there are no explicit when/when-not statements or exclusions (e.g., for bulk pricing vs. get_prices).

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

start_leaseStart a leaseAInspect

Start leasing a free window or billboard for a brand. The ad (website, name, pitch, logo) is checked first; a refused ad costs nothing. Returns checkoutUrl and leaseId: give checkoutUrl to the person, who pays the monthly price on Stripe within 60 minutes (you can't pay for them, and nothing is charged before they do). No account is needed: the window belongs to the email they pay with. Name, pitch and logo come from the website when left out. Then follow the lease with check_lease.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoPrefills Stripe; the window belongs to the email the person pays with
pitchNoOne line under the name; taken from the website when left out
logoUrlNoA logo or banner image (https); the website's share image is used when left out
brandUrlYesThe brand's website (https; a bare domain gets https:// added)
windowIdYesSlot id from find_windows, e.g. "F47-S3" or "B-1234"
brandNameNoShown on the window; taken from the website when left out
pricingTextNoOptional, e.g. "Free plan, Pro from $19/mo"

Output Schema

ParametersJSON Schema
NameRequiredDescription
reviewYesTrue when a person reviews the ad after payment, before it goes up
statusYes
leaseIdYesCheck progress at /leases/{leaseId}
messageYes
expiresAtYesThe checkout link stops working after this time (60 minutes)
priceCentsYes
checkoutUrlYesGive this to the person: they pay the monthly price on Stripe

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnly=false, idempotent=false, destructive=false, openWorld=true; the description adds far more: the ad is pre-checked and a refused ad costs nothing, returns checkoutUrl and leaseId, the human must pay within 60 minutes, no account is required, and omitted fields are backfilled from the website. This is exactly the non-obvious behavior an agent needs.

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 action, then the outcome and handoff, so structure is excellent. It is somewhat dense, with several parentheticals carrying payment and timing constraints, but every sentence carries distinct operational information and nothing is pure filler.

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 and the description still names the two return values (checkoutUrl, leaseId) and the human action they drive. Combined with auth-free operation, payment ownership, the 60-minute limit, and the explicit next tool, an agent has everything needed to invoke this correctly and hand off the result.

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 description coverage is 100% and each parameter is already documented with its fallback behavior, so the schema carries the parameter burden. The description restates the website-backfill and payment-email ownership rules but adds no syntax or format detail beyond the schema, which is the calibrated baseline of 3.

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 ('Start leasing a free window or billboard for a brand') and immediately scopes it against siblings by naming check_lease as the required follow-up and implying windowId originates from find_windows. An agent can distinguish it from find_windows/get_window/check_lease without opening any 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 workflow routing: call this after selecting a slot, then 'follow the lease with check_lease.' It also states preconditions and constraints ('you can't pay for them', 'nothing is charged before they do', 60-minute Stripe window) so the agent knows both when to call it and what it cannot do.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedcheck_lease1 field changed
      • changedOutput schema / properties / status / enum
        Previous value: -[
        -  "awaiting_payment",
        -  "in_review",
        -  "live",
        -  "refused",
        -  "rejected_refunded",
        -  "refunded",
        -  "expired",
        -  "ended"
        -]New value: +[
        +  "awaiting_payment",
        +  "in_review",
        +  "live",
        +  "refused",
        +  "rejected_refunded",
        +  "refunded",
        +  "expired",
        +  "ended",
        +  "undone"
        +]
  2. 5 tool updates
    • First observedcheck_lease
    • First observedfind_windows
    • First observedget_prices
    • First observedget_window
    • First observedstart_lease

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    x402 Ads lets AI agents buy and verify ad placements with per-request USDC payments. Agents can discover inventory, submit campaign context, receive structured placement options, and pay through x402 without API keys or accounts. Built for autonomous promotion, attribution, and pay-per-action agent commerce.
    7
    76 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP-compatible AI clients to interact with a live AI-agent city economy on Base L2, including browsing 92 NPC agents and city stats, reading crypto news and agent voices, and claiming/submitting real-USDC job board tasks via x402 micropayments.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources