Digital Underground Developer Marketplace
Server Details
Search a free marketplace of indie apps, AI tools, books and templates, and submit listings.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
get_listing and get_my_listing_status both retrieve listing information but target different scopes (public approved listing vs. the user's own review status), and the descriptions clarify this distinction. search_listings and submit_listing are clearly separate actions.
All tools use snake_case with a verb-first pattern (get_, search_, submit_), and the longer get_my_listing_status still follows the same convention consistently. There is no mixing of styles or vague verbs.
Four tools form a tight, well-scoped surface for the core marketplace interactions: search, detail retrieval, submission, and status checking. Each tool earns its place without redundancy or bloat.
The surface covers create and read operations (submit_listing, get_listing, search_listings, get_my_listing_status) but lacks update/edit or delete/withdraw for a creator's own listings. This creates a lifecycle gap for managing submissions after they are made.
Available Tools
4 toolsget_listingGet one listingARead-onlyInspect
Get full public details (including the long description) of one approved listing by its id (cm_...).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read (readOnlyHint=true, openWorldHint=false), so the bar is lower. The description still adds real behavior: only approved listings are returned, and the long description is included in the payload. It omits what happens for a missing/unapproved id, but the added constraints are genuine value beyond the annotations.
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?
One sentence, front-loaded with the action and payload scope, with the id requirement in a trailing parenthetical. No filler and nothing that could be cut without losing 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 single-parameter read with no output schema, the description usefully previews the return content ('full public details including the long description') and constraints ('approved'). What's missing is error/empty behavior for unknown or non-approved ids; otherwise it is sufficient 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?
Only one parameter at 0% schema description coverage, so the description must carry some load - and it does partially, calling out the 'cm_...' id form. However the schema's regex pattern already encodes that format, so the added meaning is thin and nothing is said about how to obtain a valid id.
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?
Specific verb+resource: fetches one listing by id, and it scopes the result to 'approved' listings and 'full public details including the long description'. That distinguishes it implicitly from search_listings (many results) and get_my_listing_status (status, not full detail), though it 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?
Usage is implied by 'by its id' - you call it when you already have a listing id and want the full record. There is no explicit statement of when to prefer this over search_listings or get_my_listing_status, and no exclusion for unapproved or draft ids.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_listing_statusCheck my listing statusARead-onlyInspect
Check the review status (pending, approved, rejected) of one of the user's own listings. Requires their API key.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| api_key | Yes |
TDQS
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 the auth requirement (API key) and the enumerated status vocabulary, which is useful. It does not disclose error behavior for a missing/unauthorized key or whether status transitions are described elsewhere.
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 tight sentences with zero filler. The purpose and the status vocabulary come first, with the prerequisite last, so the key information is front-loaded.
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 tells the agent what it does, what it returns conceptually, and the auth requirement. Error and authorization-failure behavior is the only notable omission.
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 have generic names, so the description must carry the meaning. It effectively maps both: 'id' is one of the user's own listings and 'api_key' is the user's key. That covers the parameters but adds no format, constraint, or example beyond this implicit mapping.
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 (check) and resource (review status of the user's own listing) and enumerates the possible values (pending, approved, rejected), so the agent knows exactly what is returned. It scopes to 'the user's own listings' which hints at a difference from get_listing/search_listings, but never names those siblings 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 only implied: 'the user's own listings' suggests the ownership scope, and 'Requires their API key' states a prerequisite. There is no explicit when-to-use, when-not-to-use, or routing to get_listing/search_listings/submit_listing, which are the obvious alternatives an agent must choose between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_listingsSearch marketplace listingsARead-onlyInspect
Search approved products on the Digital Underground Developer Marketplace (apps, AI tools, books, templates by independent makers). Returns summaries with links. Checkout happens on each maker's own site.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| limit | No | ||
| query | No | Words to match in name, tagline, maker or tags. Omit to list everything. | |
| category | No |
TDQS
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 that results are summaries with links and that checkout is external, but it does not disclose pagination/limit behavior or that only 'approved' items are searchable. Adequate but thin given the lower bar annotations set.
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, front-loaded with what is searched and what comes back. The checkout sentence is brief and earns its place by preventing an agent from attempting a purchase flow, though it is the least essential line.
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?
With no output schema, the description correctly summarizes the return shape ('summaries with links'), which is a real plus. However, for a 4-parameter search tool with 0 required params and only 25% schema coverage, it leaves tag/limit semantics and filtering combinations unexplained.
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 25% — only 'query' is documented in the schema, leaving 'tag' and 'limit' bare (limit has only default/min/max constraints). The description names some category values but adds no semantics for tag, limit, or how query interacts with tag/category. It does not compensate for the coverage gap.
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 (approved products/listing on the Digital Underground Developer Marketplace) with the item types enumerated in parentheses. The plural 'search' plus 'approved products' immediately distinguishes it from get_listing (single item) and submit_listing (write) without needing to name 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?
Usage is implied by 'Search approved products' and the note that 'Checkout happens on each maker's own site' — useful for knowing this tool is discovery-only and cannot transact. But there is no explicit when-to-use versus get_listing/get_my_listing_status, and no statement of when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_listingSubmit a listing for reviewAInspect
Submit the user's own product to the marketplace. Requires the creator's API key (duk_..., from the Creator dashboard -> API keys; never guess one). Free. Every submission is screened and waits for human owner approval; nothing is published automatically. Only submit real products the user owns, with accurate claims.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| tags | No | ||
| stage | Yes | Listing stage: concept, development, beta (testing), released or discontinued | |
| terms | Yes | Must be true: accepts the terms at https://digitalundergroundstore.com/community/submit/ | |
| api_key | Yes | Creator API key, duk_... | |
| category | Yes | ||
| imageUrl | No | https cover image URL | |
| videoUrl | No | ||
| pitchShort | Yes | ||
| priceLabel | No | ||
| projectUrl | Yes | https link to the product | |
| descriptionLong | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only declare non-read-only, non-destructive, non-idempotent, closed-world): it discloses that every submission is screened and waits for human owner approval, that nothing is published automatically, that the call is free, and that a duk_ Creator key is mandatory and must never be guessed. These are the operational facts an agent actually needs before invoking a submission endpoint.
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?
Four tight sentences, front-loaded with the action and ownership scope, then prerequisites and moderation behavior. Every sentence carries information; the only mild redundancy is the parenthetical hint on where to find the API key.
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, 8-required mutation tool with no output schema, the description covers the essential unknowns: auth source, cost, moderation/approval flow, and eligibility. It does not describe failure modes or validation behavior for the many undocumented fields, which is the remaining gap.
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 only 42%, so the description must compensate, and it clarifies api_key (duk_ prefix, Creator dashboard origin) and the accuracy/ownership constraints. But most of the 12 parameters (name, tags, pitchShort, descriptionLong, imageUrl, videoUrl, priceLabel, category) get no added meaning beyond the schema, leaving real gaps.
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 ("Submit the user's own product to the marketplace") plus an ownership scope that separates it from the read-oriented siblings get_listing, get_my_listing_status and search_listings. An agent can tell immediately this is the write path for a creator's own product rather than a lookup.
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?
"Only submit real products the user owns, with accurate claims" gives an explicit eligibility condition, and the API-key prerequisite is spelled out. It stops short of naming the sibling to use for checking status or finding listings, so routing is implied rather than stated.
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 tool update
- Changed
submit_listing2 fields changed- added
Input schema / properties / stageAdded value: +{ + "description": "Listing stage: concept, development, beta (testing), released or discontinued", + "enum": [ + "concept", + "development", + "beta", + "released", + "discontinued" + ], + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "api_key", - "name", - "projectUrl", - "category", - "pitchShort", - "descriptionLong", - "terms" -]New value: +[ + "api_key", + "name", + "projectUrl", + "category", + "stage", + "pitchShort", + "descriptionLong", + "terms" +]
4 tool updates
- First observed
get_listing - First observed
get_my_listing_status - First observed
search_listings - First observed
submit_listing
Related MCP Connectors
Search indie product launches, rankings and makers, and submit your own, on Awesome Indie.
Search a sourced directory of real apps built with AI tools like Cursor, Claude Code and Lovable.
Search a curated directory of AI tools, AI agents and MCP servers by task, pricing and platform.
Search AI tools, browse categories and read tool details with source links. Free, read-only access.
1
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceSearch and discover 500+ tools, APIs, and services for AI agents. Browse 15 categories, get recommendations, and access structured metadata including auth methods, free tiers, and example calls.1-
- AlicenseAqualityAmaintenanceGive your AI agent access to 8,400+ software tools — search, compare, get pricing, find alternatives, and discover the best tool for any use case.845 npm4MIT
- FlicenseNot gradedqualityAmaintenanceMachine-readable directory of AI products that register themselves, plus an agent-readability grader for any URL.1-
- AlicenseAqualityFmaintenanceEnables AI agents to search and browse a curated directory of AI projects, including MCP servers, CLI tools, libraries, and APIs, and submit new projects directly from the terminal.727 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.