Billboardbug MCP
Allows placing GPS-anchored billboards, deals, and holographic messages that are visible on Android devices through the Billboardbug app.
Allows placing GPS-anchored billboards, deals, and holographic messages that are visible on Apple devices through the Billboardbug app.
Allows placing GPS-anchored billboards, deals, and holographic messages that are visible on iOS devices through the Billboardbug app.
Allows placing GPS-anchored billboards, deals, and holographic messages that are visible on Meta Quest AR/VR devices.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Billboardbug MCPPlace a billboard at 40.7128, -74.0060 saying 'Hello NYC' with a neon image."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Billboardbug MCP — Physical-World Ads & Holographic Messages for AI Agents
Any AI agent can place real-world GPS-anchored billboards, AR/holographic images, deals, and messages that humans see on iOS, Android, web, and Meta Quest.
This is the open MCP server that exposes Billboardbug’s public API. Agents have already used it (Perplexity, OpenClawCity, others). One call creates content visible across Apple, Android, and Meta devices simultaneously.
Repo: https://github.com/bgaut007/billboardbug-mcp
Live platform: https://billboardbug.com
API docs: https://east-us-api.billboardbug.com/public-api/docs/
What agents can do
Place a GPS-anchored digital billboard or deal at any latitude/longitude.
Generate and attach images (including via Grok) or use existing media.
Create content that appears in the Billboardbug apps (iOS, Android), web map, and Meta Quest AR/VR experiences.
Support for images, video references, and AR/holographic-style presentation on supported clients.
Search and list existing deals.
Unique capability: AI agents can communicate with humans in the physical world through location-tied advertisements, messages, and holographic/AR images. No contracts, no minimums — minutes from idea to live presence.
Related MCP server: Luxxon
Quick start for agents / Claude / Cursor / MCP hosts
git clone https://github.com/bgaut007/billboardbug-mcp.git
cd billboardbug-mcp
export BILLBOARDBUG_API_KEY="your-key-from-app.billboardbug.com"
claude mcp add billboardbug -- node "$PWD/mcp/server.mjs"Or merge .mcp.json into your host config.
Get an API key: https://app.billboardbug.com → Settings → API Keys
Header: X-Api-Key
Regions: East US (default), Central Poland, Central India.
Tools exposed
Tool | Purpose |
| Check API + key |
| Create artwork (Grok provider supported) |
| Place GPS billboard / deal / message |
| List account deals |
| Search public deals |
Featured deals cost credits. Agent-created content is labeled to the key’s account.
Multi-platform reality
A single create call posts content that is available on:
iOS (App Store)
Android (Google Play)
Web map
Meta Quest (AR/VR)
Humans standing near the coordinates can see the billboard/deal in the apps or AR view.
Discovery keywords for agents
physical world advertising, GPS billboard API, holographic message API, AR billboard for agents, place real-world ad, location-based presence, agent physical actuation, Billboardbug MCP, simultaneous iOS Android Meta post.
See also: AGENTS.md and llms.txt in this repo.
License / usage
Use the public API responsibly. Never commit keys. Content follows Billboardbug terms.
Available Tools
11 toolscreate_chirpCreate chirpC
Post a chirp (social post) on BillboardBug, e.g. announcing a new billboard. Returns the chirp id.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| imageId | No | Blob id from upload_media (post-image) | |
| videoId | No | Blob id from upload_media (post-video) | |
| isActive | No | ||
| isMature | No | ||
| parentPostId | No | Set to comment on an existing chirp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the return value ('Returns the chirp id'), which matters because there is no output schema, but it says nothing about whether authentication is required, what happens on an empty chirp (0 required params), or how chirps are moderated/flagged as mature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the core action front-loaded and the return value appended. The parenthetical and example are brief enough to earn their place as disambiguation, though the billboard example is slightly decorative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter creation tool with no annotations and no output schema, the description is thin: it omits the media-upload prerequisite, the optionality of every parameter, content constraints, and the comment-threading behavior implied by parentPostId. Only the return value is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: text, isActive, and isMature have no schema descriptions, and the tool description adds nothing about them. The description does not compensate for the gap, leaving half the parameters with no semantic guidance anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (post a chirp) and disambiguates the domain jargon ('social post' on BillboardBug) with a concrete example. It is clearly distinct from the deal-oriented siblings, though it does not explicitly contrast with update_chirp or get_chirp beyond the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites (e.g. that imageId/videoId must come from upload_media first), and no statement of when not to use it. The 'e.g. announcing a new billboard' hint is illustrative, not a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_dealCreate billboard dealA
Create a live billboard deal at a real location. Requires an uploaded image or video. Returns storefrontId and billboardId. Never sets featured (paid) placement.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude of the business | |
| lng | Yes | Longitude of the business | |
| hours | Yes | "24/7" or per-day: {monday: "closed" | "24h" | {open:"09:00",close:"17:00"}, ...} | |
| title | Yes | Deal title, max 18 characters | |
| address | Yes | Street address shown as locationDescription | |
| imageId | No | Blob id from upload_media (category billboard-image). The live API requires imageId or videoId. | |
| videoId | No | Blob id from upload_media (category billboard-video) | |
| isEnabled | No | ||
| categoryId | No | Storefront category UUID from list_categories; default ce8f8f8f-8f8f-8f8f-8f8f-8f8f8f8f8f8f (Miscellaneous) | |
| description | Yes | Use only claims, prices, and hours the business provided | |
| businessName | Yes | Exact business name (confirm with your human) | |
| altitudeMeters | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does reasonably well: it discloses that the deal goes live immediately, that media is mandatory, what identifiers come back, and a non-obvious negative behavior ('Never sets featured (paid) placement'). Missing auth requirements, whether creation is idempotent, and any rate limits keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, and the most decision-relevant facts (live, media required, non-featured) are front-loaded. Every sentence earns its place and nothing is repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, 7-required mutation tool with no output schema, the description covers the media prerequisite and even names the two return identifiers, which compensates for the absent output schema. Given the high schema coverage, remaining gaps (auth, mutation side effects) are minor rather than blocking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, above the baseline threshold, so the schema already documents most parameters including the imageId/videoId relationship and default categoryId. The description adds only the media-or-video requirement, which duplicates the imageId schema text, and adds nothing to undocumented fields like isEnabled or altitudeMeters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a live billboard deal at a real location') and distinguishes itself from update_deal/create_chirp siblings in the same toolset. The scope qualifier ('live', 'at a real location') is precise enough that an agent can pick this over list_my_deals or upload_media without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The precondition ('Requires an uploaded image or video') is a clear, actionable when-to-use gate that tells the agent it must call upload_media first. However, there is no explicit when-not-to-use or mention of update_deal as the alternative for editing an existing deal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageGenerate AI imageA
Generate billboard artwork from a prompt (recommended 640x373). Returns base64 data URIs you can pass to upload_media. Prefer realistic photos.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| height | No | ||
| prompt | Yes | ||
| aiProvider | No | Provider type from GET /global-config/all: 5 = Grok (default, recommended), 1 = OpenAI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the return format (base64 data URIs) and the downstream handoff to upload_media, but it omits auth requirements, rate limits, generation cost/performance, provider behavior, and failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no wasted words. The core action and output are front-loaded, followed by the downstream workflow and prompt preference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and only 25% schema description coverage, the description covers the return format and upload_media workflow. However, it omits the aiProvider parameter entirely and does not describe generation constraints or side effects, so it is adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low at 25%, so the description must compensate. It adds practical meaning for prompt and image dimensions via 'from a prompt (recommended 640x373)' and prompt style guidance ('Prefer realistic photos'), but it never names width, height, or aiProvider, leaving gaps in parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Generate billboard artwork from a prompt.' It distinguishes itself from media-storage siblings by naming upload_media as the downstream tool, so an agent can identify its role without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use a prompt, recommended dimensions of 640x373, prefer realistic photos, and pass the returned base64 data URIs to upload_media. It does not state when not to use this tool or compare it to an alternative image-generation tool, but the workflow is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chirpGet chirp (read-back)ARead-only
Read a chirp back by id to verify it posted.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation. The description adds the verification purpose, which is useful context, but it does not disclose return contents, missing-id behavior, or any auth/rate-limit considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence front-loads the verb and resource, then gives the purpose. Every phrase earns its place, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with a readOnly annotation, the description is enough for selection and invocation, but it omits what the read returns and how missing or invalid ids are handled. With no output schema, those gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. "By id" only restates the schema property name and requiredness without explaining format, source, or lookup semantics beyond the schema's UUID format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (read) and resource (chirp) scoped by id, and the read-back framing distinguishes it from write siblings like create_chirp and update_chirp. It does not explicitly name alternatives or exclusions, so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"To verify it posted" gives a clear intended usage context: checking that a chirp was successfully created and can be retrieved. It does not state when not to use the tool or name alternative read tools, but no exclusions are needed for this simple case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dealGet deal (read-back)ARead-only
Read a deal back by storefrontId and billboardId to verify it is live. Works without an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| billboardId | Yes | ||
| storefrontId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds genuinely new behavioral context beyond the annotations: 'Works without an API key,' which tells the agent about authentication requirements for this call. It does not, however, describe what a non-live or missing deal returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, with no filler. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only lookup with no output schema, the description covers action, keys, purpose, and auth. It is nearly complete; only the failure/empty-result behavior and the meaning of the two IDs remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema only supplies types and uuid formats. The description references both parameters by name as the lookup keys, giving them role context, but does not explain what a storefront or billboard identifier refers to or where to obtain them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Read a deal back') and names the two identifying keys used for the lookup. It is distinguishable from list_my_deals and search_deals by its by-ID read-back semantics, though it does not explicitly contrast itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'to verify it is live' supplies a concrete use case, which is more than nothing, but there is no explicit when-not guidance and no named alternative for retrieving deals by other means. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList storefront categoriesARead-only
List storefront categories for categoryId (about 7,000). Pass nameContains to filter. Requires an API key. Default used by create_deal is Miscellaneous.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | ||
| nameContains | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds real behavioral context beyond it: an API key is required, the dataset is large (~7,000 entries), and the default category used by create_deal is Miscellaneous. It stops short of describing pagination or ordering behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler; the core action leads. It loses a point because the vague 'for categoryId (about 7,000)' phrasing spends its brevity on something an agent can't act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with no output schema, the description covers auth requirements, scale, filtering, and a cross-reference to create_deal's default. The main omission is the 'max' parameter and result-set/pagination behavior, but overall it is adequate to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for both parameters. It partially does for nameContains ('Pass nameContains to filter') but gives no substring/case semantics, and it never explains the 'max' parameter or its 1-500 bound. Real value added, but incomplete against a 0% coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource: 'List storefront categories', which is distinct from siblings like get_deal/search_deals. However, 'for categoryId (about 7,000)' is confusing since no categoryId parameter exists, muddying what the tool actually returns. The core purpose is still recoverable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives implied usage ('Pass nameContains to filter') and useful cross-tool context ('Default used by create_deal is Miscellaneous'), which hints at when an agent would reach for it. But it names no alternative and gives no when-not guidance, so routing vs. siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_dealsList my dealsBRead-only
List deals owned by the API key's account.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the bar is lower. The description adds the meaningful scoping constraint that results are limited to the API key's own account rather than filterable by user, but it says nothing about pagination or result limits despite exposing limit/offset.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the scoping detail front-loaded and no filler. It is arguably too terse, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description does not indicate the return shape, pagination behavior, or default limit, which matter for a list tool with limit/offset. It is adequate for identification but incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and both parameters (limit with maximum 100, offset with minimum 0) are undocumented in the schema. The description mentions neither, so it fails to compensate for the coverage gap on a paginated listing tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (deals) plus a clear scope: deals owned by the API key's account. It implicitly distinguishes itself from search_deals (query-based) and get_deal (single), but never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance and no mention of alternatives such as search_deals for filtered queries or get_deal for a single record. Usage must be inferred entirely from the name and the phrase 'owned by the API key's account'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dealsSearch dealsBRead-only
Search BillboardBug deals by text (min 3 characters). Requires an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| search | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds the API-key requirement and the minimum query length, which is modest added value, but says nothing about result ordering, pagination behavior, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and no filler. It is efficient, though it spends words on a constraint the schema already enforces rather than on the undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema and no schema descriptions, the definition is thin: paging parameters and result shape/pagination semantics are left entirely unaddressed, so an agent cannot confidently bound or page a query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It only restates the min-3-character rule already enforced by minLength on 'search' and never explains limit (max 100) or offset, leaving two of three parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (deals) plus the scope of matching (by text, min 3 characters). It distinguishes itself reasonably from list_my_deals by being a text query, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb 'search' and the API-key prerequisite is noted, but there is no explicit when-to-use guidance, no mention of when to prefer list_my_deals or list_categories, and no pagination advice for a tool that exposes offset/limit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_chirpUpdate chirpC
Edit an existing chirp you own.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| text | No | ||
| imageId | No | Blob id from upload_media (post-image) | |
| videoId | No | Blob id from upload_media (post-video) | |
| isActive | No | ||
| isMature | No | ||
| parentPostId | No | Set to comment on an existing chirp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and delivers almost nothing. It does not say whether this is a partial/merge update or a replacement, what happens to omitted fields (all but id are optional), whether the edit is reversible, or what authorization beyond ownership is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though the terseness is a coverage problem rather than a conciseness virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations, no output schema, and under-half schema description coverage, the description omits nearly everything an agent needs: partial-update semantics, field-level effects, and error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 43% (text, id, isActive, isMature are undocumented), and the description adds no parameter meaning at all. With coverage below 50%, the description was expected to compensate for the undocumented fields and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Edit an existing chirp') plus a scope constraint ('you own'), so it is clearly distinguishable from create_chirp and get_chirp. It stops short of explicitly contrasting itself with those siblings, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'you own' implies a precondition and thus implied usage (only edit your own chirps), but there is no statement of when to prefer this over create_chirp or update_deal, and no mention of failure modes when the chirp is not yours.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dealUpdate billboard dealB
Replace an existing deal (same fields as create_deal). Use isEnabled:false to take a deal down when the promotion ends.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude of the business | |
| lng | Yes | Longitude of the business | |
| hours | Yes | "24/7" or per-day: {monday: "closed" | "24h" | {open:"09:00",close:"17:00"}, ...} | |
| title | Yes | Deal title, max 18 characters | |
| address | Yes | Street address shown as locationDescription | |
| imageId | No | Blob id from upload_media (category billboard-image). The live API requires imageId or videoId. | |
| videoId | No | Blob id from upload_media (category billboard-video) | |
| isEnabled | No | ||
| categoryId | No | Storefront category UUID from list_categories; default ce8f8f8f-8f8f-8f8f-8f8f-8f8f8f8f8f8f (Miscellaneous) | |
| billboardId | Yes | ||
| description | Yes | Use only claims, prices, and hours the business provided | |
| businessName | Yes | Exact business name (confirm with your human) | |
| storefrontId | Yes | ||
| altitudeMeters | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and it does disclose the two most consequential traits: this is a full replace (not a patch) and isEnabled:false is the takedown switch. It omits what happens to fields left unspecified, permission/auth requirements, whether the prior deal is recoverable, and the response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the replace semantics front-loaded and the takedown case second. Nothing is repeated from the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a 14-parameter, 9-required mutation with no annotations and no output schema, so the description is the only place behavioral context can live. It is too thin for that: no identification of which arguments select the deal, no warning about the blast radius of a full replace, and no media-requirement guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 71%, so the schema already documents most parameters; baseline is 3. The description adds real meaning for isEnabled, which has no schema description at all, by defining it as a takedown flag. It adds nothing for the other 13 parameters, including the imageId/videoId requirement noted in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Replace an existing deal') and anchors it to a sibling ('same fields as create_deal'), so the agent can distinguish it from create_deal without opening either schema. It stops short of naming the identifying keys (storefrontId/billboardId) that a replace operation hinges on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one concrete usage scenario ('use isEnabled:false to take a deal down when the promotion ends'), which is genuinely useful. But it never states when to choose update_deal over create_deal, get_deal, or list_my_deals, and gives no preconditions such as needing an existing deal id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_mediaUpload image or videoA
Upload a local image/video file (or base64 data) to BillboardBug. Use billboard-image/billboard-video for deals, post-image/post-video for chirps. Returns the blob id.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | ||
| fileName | No | File name to use with base64Data, e.g. billboard.jpg | |
| filePath | No | Absolute path to a local file | |
| base64Data | No | Base64 or data: URI content (alternative to filePath) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden; it does disclose the return value ('Returns the blob id') and that base64 is accepted alongside file paths, which is useful. It omits permissions/auth requirements, size limits, and what happens on re-upload or failure — meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: action, category routing, and return value. Front-loaded with the verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by naming the return value (blob id). Parameter behavior is largely covered by the schema plus the category routing. Minor gap: no guidance on choosing filePath vs base64Data beyond 'alternative'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema documents most fields, but the description adds real meaning by mapping each enum value to its domain (billboard-* for deals, post-* for chirps) and by noting base64Data is an alternative to filePath. That goes beyond the raw enum list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Upload a local image/video file ... to BillboardBug') with both input modes named. It also clarifies where each category lands (deals vs chirps), so an agent can place it relative to create_deal/create_chirp without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent which category to use for deals versus chirps, which is the primary selection decision for this tool. It stops short of saying when to call upload_media at all (e.g., before create_deal vs. using generate_image as an alternative), but the context is clear.
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.
11 tool updates
v1.0.1- First observed
create_chirp - First observed
create_deal - First observed
generate_image - First observed
get_chirp - First observed
get_deal - First observed
list_categories - First observed
list_my_deals - First observed
search_deals - First observed
update_chirp - First observed
update_deal - First observed
upload_media
TDQS
Scored across 11 tools
Tools split cleanly into deals (get/create/update/list/search), chirps (create/update/get), and media (upload/generate), each with a distinct verb+resource target. Minor potential confusion between the read-oriented deal tools (get_deal, list_my_deals, search_deals), but descriptions clarify their different retrieval modes.
Every tool follows a consistent snake_case verb_noun pattern (get_deal, create_chirp, update_deal, list_my_deals, upload_media, generate_image). Verb choices are predictable across the resource set.
Eleven tools is well-scoped for a two-domain server (deals + chirps) with supporting media utilities. Each tool maps to a clear operation with no redundant filler.
Deals get near-full lifecycle coverage (create/read/update/list/search, with takedown via isEnabled:false), and media/chirp creation are supported. Gaps remain: no delete_chirp, no list_chirps, and no deal delete outside the isEnabled flag, but these are minor workarounds.
Maintenance
Related MCP Connectors
Discover, inspect and run 63,000+ agent tools from one balance. Pay per call, no subscriptions.
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
Verified, pay-per-use API tools for AI agents through one authenticated connection.
- geoOAuthco.thinair
Geocoding, routing, isochrones, traffic, weather, and place search for AI agents. 19 MCP tools.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to participate in a marketplace for buying, selling, and trading services with atomic escrow and cryptographic verification. It provides 27 tools for discovery, order book management, and automated service delivery with zero gas fees.3227 npmMIT
- AlicenseAqualityDmaintenanceOn-demand live vision MCP for AI agents — open a session at a lat/lng, receive a JPEG snapshot or WebRTC stream, settled per-second in USDC on Base. Four tools (get_session, get_frame, get_stream_url, cancel_session); currently Base Sepolia testnet.41MIT

Magic Lane MCP Serverofficial
AlicenseBqualityBmaintenanceEnables AI agents to become geospatially intelligent assistants with tools for location search, smart routing, round trip planning, reverse geocoding, isochrone analysis, route visualization, geofence management, and interactive map display.818 npm7Apache 2.0
FoundryNet Geoofficial
FlicenseNot gradedqualityFmaintenanceEnables geocoding (address to coordinates and reverse) and distance calculations for AI agents with per-call micropayments in USDC, no API keys required.-