Skip to main content
Glama

rowfeed/website-technology-checker

rowfeed--website-technology-checker
Destructive

This tool calls the Actor "rowfeed/website-technology-checker" and retrieves its output results. Actor description: Find the tech stack of any website: CMS, e-commerce platform, analytics, ad pixels, marketing and chat tools, payments, frameworks, hosting and CDN. Bulk domains in, one row per site out, grouped by category. $2 per 1,000 websites; sites that block visits are looked up in a technology database.

Input Schema

NameRequiredDescriptionDefault
domainsNoOne website per line: a domain (shopify.com) or any link on the site. Up to 5,000 per run. Example values: ["apify.com","wordpress.org","vercel.com"]
waitSecsNoMax seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget.
useDatabaseNoSome sites refuse automated visits. On: look them up in a licensed technology database instead ($0.02 per lookup, also when it has no data). Off: they get a free error row. Needs a paid Apify plan. Example values: true

Output Schema

NameRequiredDescriptionDefault
tipNoAdvisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key
runIdYesActor run ID
statsNoRun statistics
statusYesRun status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED
actorIdYesStable Apify Actor ID from the run record
summaryYesPast-tense summary of the run state
exitCodeNoActor process exit code; populated for terminal states (especially FAILED)
nextStepYesOne primary follow-up action with identifiers interpolated
storagesYesDataset and key-value store metadata, keyed by alias. "default" is always the primary entry.
actorNameNo"username/actor-name"
startedAtNoISO timestamp when the run started
finishedAtNoISO timestamp when the run finished (terminal states only)
statusMessageNoPass-through from Apify run.statusMessage
apifyConsoleUrlNoPersonalized Apify Console link to the run; present only for Console sessions

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema
      Added value: +{
      +  "description": "JSON Schema for rows in the dataset at `storages.datasets.default.id` — describes row shape only; the rows themselves are NOT returned inline in this response. Inferred from this Actor's historical successful runs. To fetch actual rows, call `get-dataset-items` with the dataset id and a `fields` projection drawn from this schema.",
      +  "properties": {
      +    "advertising": {
      +      "type": "null"
      +    },
      +    "analytics": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "cdn": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "chat": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "checked_at": {
      +      "type": "string"
      +    },
      +    "cms": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "consent": {
      +      "type": "null"
      +    },
      +    "domain": {
      +      "type": "string"
      +    },
      +    "ecommerce": {
      +      "type": "null"
      +    },
      +    "final_url": {
      +      "type": "string"
      +    },
      +    "fonts": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "frameworks": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "hosting": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "marketing": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "monitoring": {
      +      "type": "null"
      +    },
      +    "other": {
      +      "type": "null"
      +    },
      +    "page_title": {
      +      "type": "string"
      +    },
      +    "payments": {
      +      "type": "null"
      +    },
      +    "query": {
      +      "type": "string"
      +    },
      +    "reviews": {
      +      "type": "null"
      +    },
      +    "search": {
      +      "type": "null"
      +    },
      +    "security": {
      +      "type": "string"
      +    },
      +    "servers": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "source": {
      +      "type": "string"
      +    },
      +    "status_code": {
      +      "type": "number"
      +    },
      +    "technologies": {
      +      "items": {
      +        "properties": {
      +          "category": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "version": {
      +            "type": [
      +              "null",
      +              "string"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "technology_count": {
      +      "type": "number"
      +    },
      +    "testing": {
      +      "type": "null"
      +    },
      +    "video": {
      +      "type": "null"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / domains / prefill
      Added value: +[
      +  "apify.com",
      +  "wordpress.org",
      +  "vercel.com"
      +]
  3. Changed1 schema field changed
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema
      Removed value: -{
      -  "description": "JSON Schema for rows in the dataset at `storages.datasets.default.id` — describes row shape only; the rows themselves are NOT returned inline in this response. Inferred from this Actor's historical successful runs. To fetch actual rows, call `get-dataset-items` with the dataset id and a `fields` projection drawn from this schema.",
      -  "properties": {
      -    "advertising": {
      -      "type": "null"
      -    },
      -    "analytics": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "cdn": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "chat": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "checked_at": {
      -      "type": "string"
      -    },
      -    "cms": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "consent": {
      -      "type": "null"
      -    },
      -    "domain": {
      -      "type": "string"
      -    },
      -    "ecommerce": {
      -      "type": "null"
      -    },
      -    "final_url": {
      -      "type": "string"
      -    },
      -    "fonts": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "frameworks": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "hosting": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "marketing": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "monitoring": {
      -      "type": "null"
      -    },
      -    "other": {
      -      "type": "null"
      -    },
      -    "page_title": {
      -      "type": "string"
      -    },
      -    "payments": {
      -      "type": "null"
      -    },
      -    "query": {
      -      "type": "string"
      -    },
      -    "reviews": {
      -      "type": "null"
      -    },
      -    "search": {
      -      "type": "null"
      -    },
      -    "security": {
      -      "type": "string"
      -    },
      -    "servers": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "source": {
      -      "type": "string"
      -    },
      -    "status_code": {
      -      "type": "number"
      -    },
      -    "technologies": {
      -      "items": {
      -        "properties": {
      -          "category": {
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          },
      -          "version": {
      -            "type": [
      -              "null",
      -              "string"
      -            ]
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "technology_count": {
      -      "type": "number"
      -    },
      -    "testing": {
      -      "type": "null"
      -    },
      -    "video": {
      -      "type": "null"
      -    }
      -  },
      -  "type": "object"
      -}
  4. Changed1 schema field changed
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema
      Added value: +{
      +  "description": "JSON Schema for rows in the dataset at `storages.datasets.default.id` — describes row shape only; the rows themselves are NOT returned inline in this response. Inferred from this Actor's historical successful runs. To fetch actual rows, call `get-dataset-items` with the dataset id and a `fields` projection drawn from this schema.",
      +  "properties": {
      +    "advertising": {
      +      "type": "null"
      +    },
      +    "analytics": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "cdn": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "chat": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "checked_at": {
      +      "type": "string"
      +    },
      +    "cms": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "consent": {
      +      "type": "null"
      +    },
      +    "domain": {
      +      "type": "string"
      +    },
      +    "ecommerce": {
      +      "type": "null"
      +    },
      +    "final_url": {
      +      "type": "string"
      +    },
      +    "fonts": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "frameworks": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "hosting": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "marketing": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "monitoring": {
      +      "type": "null"
      +    },
      +    "other": {
      +      "type": "null"
      +    },
      +    "page_title": {
      +      "type": "string"
      +    },
      +    "payments": {
      +      "type": "null"
      +    },
      +    "query": {
      +      "type": "string"
      +    },
      +    "reviews": {
      +      "type": "null"
      +    },
      +    "search": {
      +      "type": "null"
      +    },
      +    "security": {
      +      "type": "string"
      +    },
      +    "servers": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "source": {
      +      "type": "string"
      +    },
      +    "status_code": {
      +      "type": "number"
      +    },
      +    "technologies": {
      +      "items": {
      +        "properties": {
      +          "category": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "version": {
      +            "type": [
      +              "null",
      +              "string"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "technology_count": {
      +      "type": "number"
      +    },
      +    "testing": {
      +      "type": "null"
      +    },
      +    "video": {
      +      "type": "null"
      +    }
      +  },
      +  "type": "object"
      +}
  5. Changed1 schema field changed
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema
      Removed value: -{
      -  "description": "JSON Schema for rows in the dataset at `storages.datasets.default.id` — describes row shape only; the rows themselves are NOT returned inline in this response. Inferred from this Actor's historical successful runs. To fetch actual rows, call `get-dataset-items` with the dataset id and a `fields` projection drawn from this schema.",
      -  "properties": {
      -    "advertising": {
      -      "type": "null"
      -    },
      -    "analytics": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "cdn": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "chat": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "checked_at": {
      -      "type": "string"
      -    },
      -    "cms": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "consent": {
      -      "type": "null"
      -    },
      -    "domain": {
      -      "type": "string"
      -    },
      -    "ecommerce": {
      -      "type": "null"
      -    },
      -    "final_url": {
      -      "type": "string"
      -    },
      -    "fonts": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "frameworks": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "hosting": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "marketing": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "monitoring": {
      -      "type": "null"
      -    },
      -    "other": {
      -      "type": "null"
      -    },
      -    "page_title": {
      -      "type": "string"
      -    },
      -    "payments": {
      -      "type": "null"
      -    },
      -    "query": {
      -      "type": "string"
      -    },
      -    "reviews": {
      -      "type": "null"
      -    },
      -    "search": {
      -      "type": "null"
      -    },
      -    "security": {
      -      "type": "string"
      -    },
      -    "servers": {
      -      "type": [
      -        "null",
      -        "string"
      -      ]
      -    },
      -    "source": {
      -      "type": "string"
      -    },
      -    "status_code": {
      -      "type": "number"
      -    },
      -    "technologies": {
      -      "items": {
      -        "properties": {
      -          "category": {
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          },
      -          "version": {
      -            "type": [
      -              "null",
      -              "string"
      -            ]
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "technology_count": {
      -      "type": "number"
      -    },
      -    "testing": {
      -      "type": "null"
      -    },
      -    "video": {
      -      "type": "null"
      -    }
      -  },
      -  "type": "object"
      -}
  6. Changed6 schema fields changed
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / consent / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +"null"
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / ecommerce / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +"null"
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / error
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / errorMessage
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / page_title / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +"string"
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / reviews / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +"null"
  7. Changed1 schema field changed
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / page_title / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +[
      +  "string",
      +  "null"
      +]
  8. Changed1 schema field changed
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / page_title / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +[
      +  "null",
      +  "string"
      +]
  9. Added

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses cost ($2 per 1,000 websites, $0.02 per lookup even on empty results), the paid-plan prerequisite, and the fallback behavior for sites that block automated visits. The waitSecs parameter description adds run-lifecycle behavior (cap at 45s, nextStep polling, fire-and-forget at 0). It does not reconcile the stated 'retrieves its output results' framing with the destructiveHint=true annotation or explain that a billable Actor run is launched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the Actor identity and then the capability and pricing. The opening 'This tool calls the Actor ... and retrieves its output results' is boilerplate that consumes space without adding selection value, but overall there is little waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full annotation coverage, the description needn't explain return values, and it supplies the cost and blocked-site fallback an agent needs before spending money. The main residual gap is that run lifecycle is delegated entirely to the waitSecs parameter text rather than surfaced at the top level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented with limits, defaults, and examples. The description adds only the pricing rationale behind useDatabase, which is marginal value over the schema. Baseline 3 applies when the schema carries the semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: retrieve a site's tech stack (CMS, e-commerce, analytics, pixels, payments, frameworks, hosting/CDN) for bulk domains, one row per site. That is materially more specific than the tool name alone and clearly separates it from siblings like website-traffic-checker or pagespeed-insights-api. It stops short of explicitly naming which sibling to use instead for adjacent tasks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: 'Bulk domains in, one row per site out' tells an agent this is the bulk-batch option, and the blocking-site fallback is described. There is no explicit when-not guidance and no routing to alternatives such as website-traffic-checker or seo-site-audit for overlapping intents, so the agent must infer boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.