Upforge
Server Details
Explore Upforge services and evidence, or submit a prototype for a human-approved static fit check.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 14 tools
Each tool targets a clearly distinct concern: company info, services, industries, service area, case studies, FAQs, consultation, audit, and the multi-step review upload/submission flow. Even the review-related tools form a clear pipeline with distinct responsibilities.
All tool names follow a consistent snake_case verb_noun pattern using familiar verbs like get_, request_, prepare_, finalize_, submit_, search_, check_, and match_. The naming is uniform and predictable across the entire set.
At 14 tools, the server is well-scoped for its purpose: it covers company discovery, service matching, evidence, FAQs, real-world requests, and a review submission workflow. Each tool earns its place without unnecessary duplication or bloat.
The tool surface covers the full journey from learning about Upforge to matching capabilities, requesting consultations/audits, and submitting a project review with a secure upload flow. There are no obvious dead ends: requirements lead to preparation, preparation leads to finalization, and finalization feeds submission.
Available Tools
14 toolscheck_service_areaCheck whether Upforge serves a locationARead-onlyIdempotentInspect
Look up whether Upforge works with businesses in a given city or region, and whether that market is served in person or remotely. Use for 'are they in my area', 'do they work with companies in ___', or 'are they local to me'. Omit the location to list every market with a dedicated page.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | City, region, or slug — e.g. 'Cincinnati', 'Lexington', 'Columbus'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds meaningful behavior beyond that: omitting the location lists every market with a dedicated page, and the result distinguishes in-person vs remote service. Exact response fields are unspecified, but the core behavior is transparent.
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 sentences carry the entire definition with no waste: the core meaning comes first, usage triggers follow immediately, and the optional-parameter behavior closes it out. Every sentence earns its place.
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 one-parameter, read-only lookup with no output schema, the description covers purpose, when to use it, and the special omission behavior. The only minor gap is that it doesn't sketch the return shape, but an agent has enough to invoke the tool correctly and interpret the result.
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 100% and the location parameter already has clear examples, so the baseline is 3. The description adds the key semantic that omitting the parameter is valid and returns all markets, which goes beyond what the schema states.
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 uses a specific verb and resource: 'Look up whether Upforge works with businesses in a given city or region', and clarifies that it also indicates in-person vs remote availability. This makes it unmistakably distinct from siblings like get_services or get_company_overview, which are not geographically scoped.
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 concrete natural-language triggers ('are they in my area', 'do they work with companies in ___', 'are they local to me') and explains the no-argument behavior. It doesn't explicitly say when not to use it or name alternative tools, 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.
finalize_review_uploadFreeze a project archiveAIdempotentInspect
After uploading, validate the ZIP without executing its contents and freeze the inspected bytes into a private immutable snapshot. Returns its SHA-256. Unsafe archives are rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| upload_id | Yes | ID returned by prepare_review_upload | |
| upload_token | Yes | Private capability returned by prepare_review_upload |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable behavioral context: it validates without executing contents, freezes bytes into a private immutable snapshot, rejects unsafe archives, and returns the SHA-256. This goes beyond what annotations state, covering safety and idempotency implications without contradicting them.
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?
The description is two sentences that front-load the core action and then provide safety and return details. Every sentence earns its place; it is efficient and well-structured. It could be slightly more explicit about the order relative to other tools, but overall it is concise and clear.
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?
Given the tool has 2 parameters (fully documented), no output schema, and annotations covering safety, the description provides sufficient context. It explains the main operation, safety constraint, return value, and failure condition. It doesn't detail error formats or edge cases, but for a tool in a sequential flow (after prepare_review_upload), it is reasonably complete.
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 100% – both upload_id and upload_token have clear descriptions indicating their roles. The description does not add any extra meaning about these parameters. Baseline 3 applies since the schema fully documents them; no additional value is provided by the description.
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 action: validate a ZIP and freeze it into an immutable snapshot, returning SHA-256. It clearly identifies the resource (uploaded archive) and the verb (validate/freeze). It implies a step after uploading but does not explicitly name sibling tools like prepare_review_upload or submit_project_review, so it lacks explicit differentiation.
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 'After uploading' gives clear contextual guidance on when to use this tool, implying it should be called after prepare_review_upload. However, it does not explicitly state when not to use it, nor does it mention alternatives or exclusions. The usage context is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_case_studiesGet portfolio case studies with outcomesARead-onlyIdempotentInspect
Real Upforge client projects with measured outcomes — traffic lift, conversion change, Lighthouse scores — plus what was built and a link to the live site. Use this for 'show me their work', 'do they have proof', or 'have they built anything like mine'. KPIs marked 'measured' come from live instrumentation, not estimates.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 10, max 50). | |
| category | No | Optional category filter, e.g. 'web-development', 'ecommerce'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds valuable context about the nature of the data (real projects, measured outcomes, live instrumentation) and what the results include (what was built, link to live site). It doesn't describe pagination or ordering, but the schema covers limit and category, so the description adds meaningful behavioral context beyond 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?
The description is three sentences, front-loaded with the core value proposition (real projects, measured outcomes), then usage examples, then a data-quality note. Every sentence earns its place with no fluff.
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 read-only list tool with two optional parameters and no output schema, the description is quite complete. It covers what the tool returns, the quality of the data, and when to use it. It doesn't mention ordering, pagination beyond the limit parameter, or whether results are sorted by relevance, but these are minor gaps given the simplicity of the tool.
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 100%, so the schema already documents both parameters (limit and category). The description doesn't add much beyond the schema, but it does mention category examples in the schema itself. The description's mention of 'measured outcomes' and 'live site' gives context for what the results contain, but not much about parameter semantics. Baseline 3 is appropriate.
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 clearly states the tool returns real client projects with measured outcomes, including specific metrics (traffic lift, conversion change, Lighthouse scores) and links to live sites. It distinguishes itself from siblings by focusing on portfolio proof with measured outcomes, which is unique among the listed tools.
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 explicitly provides example use cases ('show me their work', 'do they have proof', 'have they built anything like mine'), which helps an agent decide when to invoke this tool. It also clarifies that KPIs marked 'measured' come from live instrumentation, not estimates, setting expectations for the data quality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_overviewGet company overviewARead-onlyIdempotentInspect
Who Upforge is: what they build, where they're based, how long they've been operating, how to reach them, and the technologies they work in. Call this first for any general 'who are they / what do they do / are they legitimate' question before reaching for a more specific tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds meaningful context about the informational content returned and the intended first-step behavior. For a zero-parameter read-only tool, no further behavioral disclosure is necessary.
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?
The description is two sentences with no wasted words. It front-loads what the tool returns, then immediately gives usage positioning relative to more specific tools. Every sentence earns its place.
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 no-parameter, read-only informational tool, the description is complete: it lists the output domains, explains when to call it, and the annotations cover side-effect safety. There is no output schema, but the natural-language content enumeration fills that gap adequately.
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?
The input schema has zero parameters, and the description correctly avoids inventing any. With no inputs to clarify, the baseline of 4 applies; the description adds no param-specific detail because none is needed.
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 clear resource (Upforge company overview) and enumerates the exact content categories: what they build, location, operating history, contact, and technologies. It also distinguishes the tool from its siblings by instructing the agent to call it first for general company questions.
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 strong when-to-use guidance: call this first for general 'who are they / what do they do / are they legitimate' questions. It implies not to use it for specific queries by saying to reach for 'a more specific tool,' but it does not name a concrete alternative sibling, so it stops just short of fully explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_industriesGet industries servedARead-onlyIdempotentInspect
The industries Upforge has dedicated experience and pages for — AEC, healthcare, dental, legal, real estate, home services, e-commerce, SaaS, manufacturing, and more. Use for 'do they work with ___ businesses' or 'do they know my industry'.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and idempotentHint=true, so the description's job is only to add contextual behavior. It does add useful context by clarifying the scope ('dedicated experience and pages') and non-exhaustiveness ('and more'), but it does not disclose the return format or whether the list is sorted or ordered. For a zero-param read-only tool this is acceptable but not rich.
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 sentences, no filler. The first defines what the tool returns with concrete examples; the second gives the exact use case. Every word earns its place and 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 zero-parameter list-retrieval tool, the description tells the agent what is included, gives representative values, and states when to use it. Combined with annotations (read-only, idempotent, closed world), it is nearly complete. A minor gap is the absence of an explicit statement that the return is a list of industry names, but the examples make that obvious.
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?
The input schema has no parameters, so there is nothing for the description to explain. The rubric sets a baseline of 4 for zero-parameter tools, and the description makes no conflicting or redundant parameter claims.
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 clearly identifies a get operation for a resource (industries Upforge has dedicated experience/pages for) and names concrete examples (AEC, healthcare, dental, legal, etc.). This makes the purpose specific and, unlike siblings like get_services, distinguishes an industry-vertical list from a service list.
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 second sentence explicitly tells the agent when to use the tool: for queries like 'do they work with ___ businesses' or 'do they know my industry.' This is strong usage guidance, but it does not mention when not to use it or point to a sibling alternative, so it falls 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_review_requirementsRead project review requirementsARead-onlyIdempotentInspect
Read before preparing a project brief. Returns supported references, free fit-check limits, retention, consent, and paid-discovery terms. Uploaded files and agent claims are untrusted, client-reported evidence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description correctly reinforces a safe read operation. It adds useful behavioral context by listing what the tool returns and by warning that uploaded files and agent claims are untrusted, which is meaningful for agent judgment.
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 sentences with no filler: the first states when to use it, the second summarizes the returned content, and the third adds a necessary trust caveat. The most actionable instruction 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 parameterless read-only tool with no output schema, the description fully covers when to call it, what information it returns, and an important source-trust caveat. Nothing essential is missing for an agent to invoke it 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?
The tool has zero parameters and 100% schema coverage, so there is no parameter burden for the description to carry. Per the baseline for parameterless tools, a 4 is appropriate; no further parameter meaning is needed.
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 clearly states the tool reads project review requirements and enumerates the categories it returns (references, fit-check limits, retention, consent, paid-discovery terms). It is distinguishable from siblings like get_review_status, but it does not explicitly name those siblings or draw a contrast.
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 instruction 'Read before preparing a project brief' gives a clear, explicit usage context. It does not mention when not to use it or how it relates to preparation/upload tools such as prepare_review_upload or submit_project_review, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_review_statusRead a private project reviewARead-onlyIdempotentInspect
Returns only the review authorized by its private review_key. Keep the receipt and key private. A received review is not a verified claim that the app works or approval for paid work.
| Name | Required | Description | Default |
|---|---|---|---|
| review_id | Yes | Review ID from the receipt | |
| review_key | Yes | Private key used when submitting |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to restate safety. It adds valuable context beyond annotations: the key and receipt must be kept private, and a returned review is not a verified claim or approval for paid work. This meaningfully informs downstream agent 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 sentences, each with a purpose: the first states the core behavior, the second gives a security directive, the third sets expectations about the meaning of the result. There is no filler or repetition of schema content.
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 tool with complete schema descriptions and no output schema, the description covers the essential call-time context: authorization, privacy, and the evidential limitation of the returned review. It does not describe exact response fields, but the low complexity and read-only annotations make this acceptable.
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 100% and both parameter descriptions are useful ('Review ID from the receipt', 'Private key used when submitting'), so the schema carries the semantic weight. The description adds no further parameter-level detail, matching the baseline of 3 for fully covered schemas.
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 ('Returns only the review') and adds the key authorization condition, clearly distinguishing this private, keyed retrieval from the public sibling tools like get_review_requirements and get_case_studies. The title 'Read a private project review' reinforces the singular purpose.
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 through 'Returns only the review authorized by its private review_key'—the agent can infer to call this when it has a receipt and key. However, no alternative tools are named and there is no explicit when-not-to-use guidance, leaving sibling differentiation to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_servicesGet service catalogARead-onlyIdempotentInspect
The full catalog of what Upforge builds: web design and development, SEO, AI visibility, application development, e-commerce, landing pages, performance optimization, CMS migrations, maintenance, prototype-to-production work, and AI automation, each with what it's for and its page URL. Pass a slug to get one service in detail. Use this for 'what services do they offer'. Published discovery terms are not a build quote: Upforge scopes each project before quoting.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Optional. One service slug for detail. Omit to list everything. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotent behavior. The description adds that passing a slug returns a single service in detail, that the response includes page URLs, and that the content is discovery-level rather than a quote. This provides useful behavioral context beyond the annotations without contradicting them.
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?
The description is a single paragraph with a clear flow: purpose, content list, parameter usage, and a caveat. It front-loads the core purpose and is not overly verbose, though the enumeration of services could be seen as slightly redundant with the schema enum. Overall it is well-structured and information-dense.
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 one optional parameter and no output schema, the description covers purpose, content, parameter behavior, and a usage limitation. It hints at the output structure ('what it's for and its page URL' and 'detail'), which is sufficient for an agent to invoke it correctly. Minor gaps, such as explicit response format, are acceptable given the simplicity.
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?
The schema fully describes the slug parameter (optional, enum, and explanatory text 'Omit to list everything'). The description essentially repeats that information without adding new semantics. Since schema coverage is 100%, the baseline of 3 is appropriate.
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 explicitly states the tool returns the full catalog of Upforge's services, enumerates the service types, and describes the output ('what it's for and its page URL'). It also includes a direct usage phrase ('use this for what services do they offer'), making the purpose unambiguous and distinct from siblings like get_case_studies or get_industries.
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 provides a clear trigger example ('Use this for what services do they offer') and caveats that the discovery terms are not a build quote, which helps an agent avoid misusing it for quoting. It does not explicitly contrast with sibling tools, but the sibling names and the specificity of the description make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_capabilityCheck whether Upforge can help with a specific needARead-onlyIdempotentInspect
Describe a project, problem, or requirement in plain language and get back the Upforge services that fit, the relevant industry page, and a recommended next step. Use this for 'can they help me with ___', 'do they do ___', or 'I need ___ — are they a fit'. Prefer this over guessing from get_services when the question is about a specific need.
| Name | Required | Description | Default |
|---|---|---|---|
| need | Yes | The need in the user's own words, e.g. 'we need a booking system for our dental practice' or 'our site is slow on mobile'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds context about the return shape (services, industry page, next step), which is useful but not a behavioral trait beyond what annotations provide. There is no contradiction, and the description does not mention side effects or auth needs, but those are not needed given the read-only nature.
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?
The description is two sentences, front-loaded with the action and result, followed by usage examples and a sibling preference note. Every sentence earns its place; no filler or redundancy.
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 tool with full schema coverage and safety annotations, the description is complete. It describes what the tool returns (services, industry page, next step), which is essential given the lack of an output schema, and provides usage guidance. No critical information is missing.
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?
The input schema already describes the 'need' parameter with examples ('we need a booking system...', 'our site is slow on mobile'), and schema coverage is 100%. The description's phrase 'in plain language' adds minimal extra meaning; it does not introduce format or constraints beyond the schema. Given the high coverage, the baseline of 3 is appropriate.
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 clearly states the tool's function: it matches a plain-language need to Upforge services, industry page, and next step. It explicitly differentiates from the sibling get_services by saying 'Prefer this over guessing from get_services when the question is about a specific need,' making its purpose distinct and 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 description gives explicit usage scenarios with example phrasings ('can they help me with ___', 'do they do ___', 'I need ___ — are they a fit') and names the alternative tool (get_services) with a clear condition for preference. This leaves no doubt about when to invoke this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_review_uploadPrepare private project archive uploadAInspect
Only after the user confirms rights to submit and accepts the retention terms from get_review_requirements. Returns a direct Supabase upload URL. Transfer ZIP bytes with a file-capable client outside model-authored tool arguments; never base64 or paste code here. Keep the upload token private.
| Name | Required | Description | Default |
|---|---|---|---|
| rights_to_submit | Yes | ||
| retention_accepted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and openWorldHint=true, so the description is not contradicting. It adds behavioral context beyond annotations: the tool returns an upload URL and requires external byte transfer ('outside model-authored tool arguments'), which is crucial for an agent to understand side effects. It also ties the prerequisites to the workflow, which is useful. Minor gap: it doesn't state whether the token expires or what happens on failure, but the core behavior is disclosed.
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 sentences, each earning its place: prerequisite, output, transfer method, and security note. No filler or redundancy. Information is front-loaded with the most critical constraint first. Highly efficient.
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 preparation tool with no output schema, the description covers prerequisites (rights and retention), the output (Supabase upload URL), the required transfer method (ZIP bytes via file-capable client), and a security caution (keep token private). The next step (finalize_review_upload) is a sibling and doesn't need to be described here. An agent has everything needed to invoke this 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 description coverage is 0%, so the description must compensate. It does not explicitly map the two boolean parameters (rights_to_submit, retention_accepted) but the phrase 'Only after the user confirms rights to submit and accepts the retention terms' strongly implies these are the confirmations. The parameter names are self-explanatory, and the description adds workflow context but no direct syntax or validation rules. This is adequate but not comprehensive.
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 clearly states the tool's purpose: preparing a private project archive upload by returning a direct Supabase upload URL. It is a specific verb+resource and distinguishes itself from the sibling finalize_review_upload by framing this as the preparation step. The phrase 'Only after the user confirms...' anchors it in the workflow, making it 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?
Explicit when-to-use guidance: 'Only after the user confirms rights to submit and accepts the retention terms from get_review_requirements.' It also gives a negative instruction ('never base64 or paste code here') and a security directive ('Keep the upload token private'). The alternative workflow (finalize) is implied through the sibling list but not explicitly named; still, the conditions for calling are fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_consultationRequest a consultation or quoteAInspect
Send Upforge a project enquiry — a real message that reaches a real person, who replies. Use this to book a consultation, request a quote, or ask something the other tools can't answer. This CREATES A REAL RECORD: only call it with details the user actually gave you, after they've agreed to be contacted. Never fabricate contact details.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | The user's own email address. Never guess this. | ||
| phone | Yes | The user's phone number. Upforge's contact form requires one, so ask for it. Never guess this. | |
| company | No | Company name (optional). | |
| message | Yes | What they need, in their own words. Include budget and timeline if known — it's what makes the first reply useful. | |
| website | No | Their current site (optional). | |
| lastName | Yes | User's last name. | |
| firstName | Yes | User's first name. | |
| serviceInterest | No | Service slug from get_services, if one clearly applies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses the side effect: 'This CREATES A REAL RECORD'. It goes beyond annotations (openWorldHint true) to explain the real-world consequence and the requirement for user consent. It also notes that a real person replies, adding practical behavioral context.
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?
The description is three sentences with zero filler. It front-loads the purpose, then the usage, then a critical warning. Every sentence earns its place, and the structure makes the tool's purpose and constraints immediately clear.
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 form-submission tool with side effects and 5 required params, the description covers the essential context: what the tool does, when to use it, and the critical safety constraint about real user data. It also implies the outcome (a real person replies), which addresses the lack of an output schema.
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?
The schema already covers all parameters with descriptions (100% coverage), but the description adds meaningful param guidance: it emphasizes never guessing email/phone, advises including budget/timeline in the message, and notes the contact form requires a phone number. This adds value over the bare 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?
The description states a specific verb-resource pair ('Send Upforge a project enquiry'), names the primary use cases (book consultation, request quote), and explicitly distinguishes it from other tools by saying 'ask something the other tools can't answer.' This clearly differentiates it from siblings like request_site_audit.
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 explicit when-to-use conditions ('book a consultation, request a quote, or ask something the other tools can't answer') and a hard constraint ('only call it with details the user actually gave you, after they've agreed to be contacted'). It also warns against fabricating contact details, which is a clear usage boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_site_auditRequest a free website auditAInspect
Request Upforge's free technical audit of a website. Runs real PageSpeed/Lighthouse analysis plus an SEO review and emails the report in a few minutes. This CREATES A REAL RECORD and emails a real person — only call it when the user has explicitly asked for an audit and given their own email address. Never invent an email address to call this.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL of the site to audit, including https://. | |
| Yes | The user's own email address — the report is sent here. Must be supplied by the user, never guessed. | ||
| goals | No | What they're hoping the audit will tell them. | |
| phone | No | Phone number (optional). | |
| company | No | Company name. | |
| lastName | No | User's last name. | |
| firstName | No | User's first name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses real-world side effects beyond the annotations: 'This CREATES A REAL RECORD and emails a real person.' This adds critical context that readOnlyHint=false and destructiveHint=false do not fully convey, warning the agent about irreversible or consequential actions.
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?
The description is compact and front-loaded, stating the core purpose in the first sentence, then adding the critical side-effect warning and usage constraint. Every sentence earns its place without redundant detail.
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 output schema and asynchronous behavior, the description fully covers what an agent needs to know: the action, the analysis performed, the delivery mechanism (email), and the expected time frame. It also covers the most important prerequisite (user's own email), making it complete 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 coverage is 100% and the parameters are well-documented in the input schema. The description reinforces the email rule ('Must be supplied by the user, never guessed') but adds little beyond the schema's existing descriptions, so the baseline score of 3 is appropriate.
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: 'Request Upforge's free technical audit of a website' and clarifies the exact services rendered (PageSpeed/Lighthouse analysis, SEO review, emailing the report). This is unambiguous and easily distinguishable from the sibling tools like request_consultation or get_case_studies.
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 provides explicit when-to-use guidance: 'only call it when the user has explicitly asked for an audit and given their own email address.' It also states a firm exclusion: 'Never invent an email address to call this.' This goes beyond vague context and gives the agent a clear decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_faqSearch Upforge's FAQARead-onlyIdempotentInspect
Search Upforge's published answers to common questions — process, timelines, cost, ownership of the code, hosting, what happens after launch. Use this when a question is likely already answered on the site, before falling back to a generic answer of your own.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 5, max 25). | |
| query | No | What to search for. Omit to list all questions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds context about the authoritative source and the breadth of topics, but does not disclose behavior such as return format, pagination, or result ordering. It contributes modest extra context 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?
Two sentences, no filler. The action and scope are front-loaded, followed by concrete examples and a concise usage directive. Every clause earns its place.
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 search tool with two optional parameters, the description covers what is searched, what topics it addresses, and when to use it. The only minor gap is that it does not explicitly describe the shape of the returned data (e.g., snippets vs. full answers), but no output schema exists, so the description carries a somewhat heavier burden. Still, it is nearly sufficient.
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 100%, so both 'limit' and 'query' are already documented with meaningful descriptions. The tool description adds no parameter-specific semantics beyond restating the intent; the baseline of 3 applies because the schema carries the weight adequately.
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 opens with a specific verb ('Search') and a resource ('Upforge's published answers to common questions'), and it enumerates the content areas (process, timelines, cost, ownership, hosting, post-launch). This makes it unmistakably distinct from sibling tools like get_company_overview or get_services, which cover other content types.
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 explicitly states when to use the tool: 'when a question is likely already answered on the site', and it gives a clear when-not by directing the agent to use it 'before falling back to a generic answer of your own'. It does not name specific sibling tools as alternatives, but the guidance is actionable and self-contained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_project_reviewSubmit a project for a static fit checkAIdempotentInspect
Creates one real CRM lead and review. Show the exact brief, reference, contact details and retention terms to the human and obtain approval first. Submission authorizes review only, never repairs, deployment or paid work. Mark all agent claims client-reported. Generate a UUID once for review_key, retain it privately, and reuse it unchanged on retries. Use either repository_url + full commit_hash or snapshot_id + upload_token. Never submit secrets or file bytes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human submitter's own name | |
| brief | Yes | Goals, stack, named workflows, known problems, and client-reported assertions, up to 8000 characters | |
| Yes | Human submitter's own email | ||
| review_key | Yes | Private UUID idempotency and status-access key, generated once | |
| commit_hash | No | Full 40- or 64-character commit hash | |
| review_only | Yes | ||
| snapshot_id | No | Frozen snapshot ID from finalize_review_upload | |
| upload_token | No | Private capability from prepare_review_upload | |
| agent_identity | Yes | Stable name of the submitting coding agent | |
| human_approved | Yes | ||
| repository_url | No | HTTPS GitHub, GitLab, or Bitbucket repository URL | |
| rights_to_submit | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations. It discloses that the tool creates a real CRM lead (consistent with openWorldHint), mandates client-reported marking, specifies idempotency mechanics (UUID reuse), and prohibits secrets or file bytes. These are concrete behavioral details that annotations alone do not convey, with no contradictions.
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?
The description is a tight, front-loaded paragraph with zero fluff. It states the primary action first, then prerequisites, scope constraints, idempotency, parameter alternatives, and safety rules in logical order. Every sentence carries essential 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 12-parameter tool with 8 required fields and no output schema, the description covers the essential operational knowledge: what it does, approval requirement, idempotency key handling, source selection, and forbidden inputs. An agent can safely invoke it without additional lookup.
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?
With schema coverage at 75% (moderate), the description adds meaning by clarifying the mutually exclusive source groups (repository_url+commit_hash vs snapshot_id+upload_token) and the private nature of review_key. This helps an agent understand parameter relationships beyond the individual field descriptions.
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 opens with 'Creates one real CRM lead and review,' a specific verb and resource that clearly states the tool's purpose. It distinguishes itself from sibling upload and status tools by explicitly framing this as the final submission step that creates a CRM record and review, not just an upload.
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 provides clear preconditions ('Show the exact brief... and obtain approval first') and parameter selection guidance ('Use either repository_url + full commit_hash or snapshot_id + upload_token'). While it doesn't explicitly name alternatives or state when not to use this tool, the context with sibling tools like prepare_review_upload and finalize_review_upload implies the workflow, and the preconditions effectively gate usage.
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.
14 tool updates
- First observed
check_service_area - First observed
finalize_review_upload - First observed
get_case_studies - First observed
get_company_overview - First observed
get_industries - First observed
get_review_requirements - First observed
get_review_status - First observed
get_services - First observed
match_capability - First observed
prepare_review_upload - First observed
request_consultation - First observed
request_site_audit - First observed
search_faq - First observed
submit_project_review
Related MCP Connectors
Turn designs into shipped parts: quote 3D printing, CNC, and decals, then check out.
Real 3D-print slicing, quoting, DFM, orientation & material/settings advisors. Free personal tier.
Quote, purchase, and track custom 3D prints from AIURION in San Francisco.
Find and submit local 3D print files for manual PrintYourDuck quote review.
Related MCP Servers
- AlicenseAqualityAmaintenanceEvidence-backed private AI deployment intelligence for GPU and LLM inference. Search benchmark evidence, check deployment fit, predict performance, get hardware recommendations, and generate launch configurations.25GPL 3.0
- AlicenseNot gradedqualityBmaintenanceProvides source-backed design context, route card validation, contract generation, critique and verification reports, evidence packages, Penpot change plans, and anti-repeat checks for design workflows. Does not directly mutate Penpot, but consumes read-only Penpot snapshots.1 npmMIT

BackBond Agent Scanofficial
AlicenseNot gradedqualityBmaintenanceLocal static inspection of MCP and AI-agent tool manifests before attachment, reporting findings and missing evidence without executing proposed tools. Results do not establish runtime safety.138 npmMIT- FlicenseAqualityBmaintenanceMCP server for real FDM 3D-printing slicing, quoting, and design-for-manufacturability analysis via the FabTally API, supporting 12 printer profiles and 12 materials. Includes free discovery/printability tools and paid slice/quote/orientation tools settled via x402 (USDC on Base).6-
Glama MCP Gateway
Add one secure layer between your agents and this server.