Digital Underground Developer Marketplace
Server Details
Search a free marketplace of indie apps, AI tools, books and templates, and submit listings.
- Status
- Healthy
- Uptime
- 100.0% over 18 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
Each tool has a clearly distinct target: public single-listing fetch, own-listing status check, marketplace search, and submission. The public get_listing vs. authenticated get_my_listing_status distinction is made explicit by the 'my/own/API key' phrasing and listing id format.
All four tools follow a consistent snake_case verb_noun pattern with imperative verbs (get_, get_my_, search_, submit_). Resource-oriented suffixes (listing, listings, listing_status) keep the family readable and predictable.
Four tools is on the thin side for a marketplace with both consumer and creator flows, leaving little room for listing management. It's defensible for a minimal surface, but borderline lightweight.
Create, read, search, and status-check are covered, but there is no way to update, edit, withdraw, or delete a submitted listing, and no tool to list all of a user's own listings at once. These gaps will force agents into dead ends for common creator workflows.
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 automatically and goes live once it passes; flagged ones wait for owner review. 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?
Annotations declare a non-idempotent, non-destructive write; the description goes well beyond that. It discloses the auth source ('Creator dashboard -> API keys; never guess one'), that it is free, the automated screening/go-live workflow, and that flagged submissions wait for owner review. This is rich behavioral context an agent cannot derive 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then auth, cost, workflow, and content rules. Every sentence earns its place, though the density of operational info makes it a touch long. Efficient and well-ordered.
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, so return values needn't be explained; the description covers the operational essentials (auth, cost, moderation workflow, ownership constraints). The remaining gap is field-level content guidance for the 8 required parameters, but the schema itself carries the rest.
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 low (42%) for 12 params, so the description should compensate but largely doesn't. It adds real value on api_key (format and where to obtain it) and hints at accurate claims, but says nothing about name, category, stage, pitchShort, descriptionLong, terms, tags, URLs, or price. One param enriched of twelve.
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+scope: 'Submit the user's own product to the marketplace.' This implicitly contrasts with the read-only siblings (get_listing, search_listings), though it never explicitly names them. An agent can tell what it does, but sibling differentiation is left to inference.
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 clear context and constraints: requires the creator's own API key, is free, and 'Only submit real products the user owns, with accurate claims.' However, it never states when NOT to use it or points to an alternative submission flow. Clear usage conditions but no explicit exclusions.
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
Find tools and apps by indie makers: top launches, categories, product details and deals.
Search indie product launches, rankings and makers, and submit your own, on Awesome Indie.
Search, buy and sell AI agents, apps, prompts and templates. AI agents can list products and earn.
Search curated free and open source AI tools for indie makers on OpenFree.
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-
- AlicenseNot gradedqualityAmaintenanceEnables coding agents to query a sourced directory of real apps shipped with AI coding tools, plus build tools, agent harnesses and frameworks with dated official pricing and revenue rankings. Supports searching and comparing tools side by side, ranking stacks for an app idea, and submitting an app or newsletter subscription on the user's behalf.MIT
- AlicenseNot gradedqualityCmaintenanceEnables agents to search and browse a directory of AI agents, MCP servers and agent skills by category, pricing and access model, surface trending items and new launches, find alternatives to a given product, and compare several listings side by side. It also lets a signed-in user submit new listings and post star reviews through OAuth-authenticated tools.MIT
- AlicenseNot gradedqualityBmaintenanceEnables an AI assistant to search, compare and get stack recommendations from a curated directory of 169 verified software tools for one-person businesses, review verified listing changes, and submit new tools to the directory.0MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.