Find and lease ad windows and city billboards on The Pillar, a 3D tower. Paid monthly on Stripe.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The leaseId from start_lease
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.
| Argument | Type | Description |
|---|---|---|
| leaseId* | string | The leaseId from start_lease |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"leaseId"
],
"properties": {
"leaseId": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The leaseId from start_lease"
}
}
}List the free ad windows on the tower, the free city billboards and the free casino game sponsorships, with monthly prices. Tower windows come first (floor 1 up, the cheapest floors first), then billboards (the most prominent first), then the casino's games: 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.
| Argument | Type | Description |
|---|---|---|
| face | string | |
| kind | string | window = on the tower, billboard = in the city around it, casino = the sponsor of one casino game |
| spot | string | Corner windows cost 35% more |
| floor | integer | One floor, 1 to 80 (higher floors cost more) |
| limit | integer | Items per page, 1 to 100 (default 20) |
| cursor | string | The next value from the previous page |
| floorMax | integer | |
| floorMin | integer | |
| maxPrice | number | Highest monthly price in US dollars, e.g. 20 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"face": {
"enum": [
"south",
"east",
"north",
"west"
],
"type": "string"
},
"kind": {
"enum": [
"window",
"billboard",
"casino"
],
"type": "string",
"description": "window = on the tower, billboard = in the city around it, casino = the sponsor of one casino game"
},
"spot": {
"enum": [
"corner",
"middle"
],
"type": "string",
"description": "Corner windows cost 35% more"
},
"floor": {
"type": "integer",
"maximum": 80,
"minimum": 1,
"description": "One floor, 1 to 80 (higher floors cost more)"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1 to 100 (default 20)"
},
"cursor": {
"type": "string",
"maxLength": 20,
"description": "The next value from the previous page"
},
"floorMax": {
"type": "integer",
"maximum": 80,
"minimum": 1
},
"floorMin": {
"type": "integer",
"maximum": 80,
"minimum": 1
},
"maxPrice": {
"type": "number",
"description": "Highest monthly price in US dollars, e.g. 20",
"exclusiveMinimum": 0
}
}
}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.
No arguments.
{
"type": "object",
"properties": {}
}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).
| Argument | Type | Description |
|---|---|---|
| id* | string | Window or billboard id, e.g. "F47-S3" or "B-1234" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Window or billboard id, e.g. \"F47-S3\" or \"B-1234\""
}
}
}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. Agents with their own USDC wallet on Base can instead pay for a month themselves with x402 at POST https://thepillar.io/api/v1/leases/x402 (no account; see thepillar.io/developers#x402).
| Argument | Type | Description |
|---|---|---|
| string | Prefills Stripe; the window belongs to the email the person pays with | |
| pitch | string | One line under the name; taken from the website when left out |
| logoUrl | string | A logo or banner image (https); the website's share image is used when left out |
| brandUrl* | string | The brand's website (https; a bare domain gets https:// added) |
| windowId* | string | Slot id from find_windows, e.g. "F47-S3" or "B-1234" |
| brandName | string | Shown on the window; taken from the website when left out |
| pricingText | string |
| Optional, e.g. "Free plan, Pro from $19/mo" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"brandUrl",
"windowId"
],
"properties": {
"email": {
"type": "string",
"maxLength": 200,
"description": "Prefills Stripe; the window belongs to the email the person pays with"
},
"pitch": {
"type": "string",
"maxLength": 140,
"description": "One line under the name; taken from the website when left out"
},
"logoUrl": {
"type": "string",
"maxLength": 400,
"description": "A logo or banner image (https); the website's share image is used when left out"
},
"brandUrl": {
"type": "string",
"maxLength": 400,
"description": "The brand's website (https; a bare domain gets https:// added)"
},
"windowId": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Slot id from find_windows, e.g. \"F47-S3\" or \"B-1234\""
},
"brandName": {
"type": "string",
"maxLength": 40,
"description": "Shown on the window; taken from the website when left out"
},
"pricingText": {
"type": "string",
"maxLength": 80,
"description": "Optional, e.g. \"Free plan, Pro from $19/mo\""
}
}
}