← Assay Observatory

⚡ 4-Protocol A2A, Glama 6-Dim TDQS, x402 Bazaar & Stripe MPP Compiler

Assay Badge
Target: https://vera.waggle.ae/v1
Source: Live MCP JSON-RPC (tools/list) | Tools Audited: 8 | Current Glama TDQS: 3.13/5.0 (62.6/100) → Compiled: 5.0/5.0 (100/100)
1. Glama 6-Dim TDQS: 3.13/5.0 → 5.0/5.0
2. A2A Agent Card: ○ MISSING (Auto-Generated in $9 Pack)
3. x402 v2 Bazaar: ● Ready in $9 Pack
4. Stripe MPP (-32042): ● Ready in $9 Pack

Embed Verified README Badge (Free): [![Assay MCP Security](https://assay-207908449630.us-central1.run.app/v1/badge.svg?target=https://vera.waggle.ae/v1)](https://assay-207908449630.us-central1.run.app/?inspect=https://vera.waggle.ae/v1)

Canonical SHA-256 Schema Lock: sha256:c7def5ae901a1.. → sha256:11c35e4a3e19d..

1. Per-Tool Glama 2026 Rubric Breakdown (8 Tools)

MCP Tool NameCurrent TDQSDetected Glama Rubric Deductions (Behavior / Conciseness / Parameters / Usage / Schema)
scrape3.7/5.0 (74)Missing outputSchema (Completeness -1), Behavior 3/5: no side-effect/quota disclosure
search3.7/5.0 (74)Missing outputSchema (Completeness -1), Behavior 3/5: no side-effect/quota disclosure
extract_contacts3.05/5.0 (61)Missing outputSchema (Completeness -1), Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure
extract_products3.05/5.0 (61)Missing outputSchema (Completeness -1), Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure
youtube_transcript2.4/5.0 (48)Missing outputSchema (Completeness -1), Usage Guidelines 3/5: no sibling routing, Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure
company_profile3.05/5.0 (61)Missing outputSchema (Completeness -1), Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure
sitemap3.05/5.0 (61)Missing outputSchema (Completeness -1), Usage Guidelines 3/5: no sibling routing, Behavior 3/5: no side-effect/quota disclosure
seo_audit3.05/5.0 (61)Missing outputSchema (Completeness -1), Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure

2. 🔒 FREE LIVE PREVIEW (Tool 1 of 8 Compiled to 5.0/5.0 TDQS + A2A Skill #1)

{
  "tool_1_before": {
    "name": "scrape",
    "title": "Read a web page",
    "description": "Read one public web page and return its content: the main text (as Markdown with response_format=\"markdown\"), links, metadata and a quality score, plus the raw HTML if you ask (return_html). Set render=true for pages that build their content with JavaScript, or mode=\"auto\" to render only when a plain fetch comes back empty. extract pulls named fields out with CSS selectors. Costs 1 credit for a plain fetch and 5 credits when the page is rendered; a failed call costs nothing. Pages that disallow automated access or need a login cannot be read.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "url": {
          "maxLength": 2048,
          "minLength": 8,
          "type": "string",
          "description": "The full public http(s) address of the page."
        },
        "response_format": {
          "default": "all",
          "enum": [
            "text",
            "markdown",
            "all"
          ],
          "type": "string",
          "description": "Use \"markdown\" to get the page's main content as Markdown in data.markdown, the best form for reading or summarising. \"all\" (the default) and \"text\" return the standard fields: text, links, metadata and a quality score."
        },
        "return_html": {
          "default": false,
          "type": "boolean",
          "description": "Also return the page's raw HTML in data.html (up to 2 MB). Not with extract."
        },
        "render": {
          "default": false,
          "type": "boolean",
          "description": "Run the page's JavaScript in a browser first, for pages that build their content in the browser. Costs more."
        },
        "wait_ms": {
          "default": 500,
          "maximum": 3000,
          "minimum": 0,
          "type": "integer",
          "description": "Milliseconds to wait after the page loads. Needs render=true."
        },
        "wait_for": {
          "maxLength": 200,
          "minLength": 1,
          "type": "string",
          "description": "A CSS selector to wait for before reading. Needs render=true."
        },
        "extract": {
          "additionalProperties": {
            "additionalProperties": false,
            "properties": {
              "selector": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "attribute": {
                "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$",
                "type": "string"
              },
              "multiple": {
                "default": false,
                "type": "boolean"
              }
            },
            "required": [
              "selector"
            ],
            "type": "object"
          },
          "maxProperties": 10,
          "type": "object",
          "description": "Named fields to pull out with a CSS selector, for example {\"heading\":{\"selector\":\"h1\"},\"links\":{\"selector\":\"a\",\"attribute\":\"href\", \"multiple\":true}}. One tag, class, ID or attribute selector each. Static pages only."
        },
        "mode": {
          "default": "manual",
          "enum": [
            "manual",
            "auto"
          ],
          "type": "string",
          "description": "\"manual\" (the default) does what render says. \"auto\" fetches the page plainly and renders it only when it looks empty; it holds up to max_cost credits and charges what it used."
        },
        "max_cost": {
          "maximum": 5,
          "minimum": 1,
          "type": "integer",
          "description": "With mode=auto, the most to spend: 1 never renders, 5 may render."
        },
        "min_quality_score": {
          "maximum": 100,
          "minimum": 0,
          "type": "integer",
          "description": "Refuse the page, at no charge, when its quality score is below this."
        },
        "country": {
          "pattern": "^[a-zA-Z]{2}$",
          "type": "string",
          "description": "Two-letter country code for the language headers of the request, for example ae or gb. It does not route the request through that country."
        },
        "idempotency_key": {
          "type": "string",
          "minLength": 16,
          "maxLength": 128,
          "pattern": "^[A-Za-z0-9_.:-]+$",
          "description": "Optional. Send the same key (16 to 128 letters, digits, _ . : -) to retry this exact call safely: a retry within 24 hours returns the first result and is not charged again."
        }
      },
      "required": [
        "url"
      ],
      "additionalProperties": false
    },
    "annotations": {
      "title": "Read a web page",
      "readOnlyHint": true,
      "openWorldHint": true
    }
  },
  "tool_1_compiled_5_0_tdqs": {
    "name": "scrape",
    "title": "Scrape",
    "description": "Read one public web page and return its content: the main text (as Markdown with response_format=\"markdown\"), links, metadata and a quality score, plus the raw HTML if you ask (return_html). Set render=true for pages that build their content with JavaScript, or mode=\"auto\" to render only when a plain fetch comes back empty. extract pulls named fields out with CSS selectors. Costs 1 credit for a plain fetch and 5 credits when the page is rendered; a failed call costs nothing. Pages that disallow automated access or need a login cannot be read. WHEN TO USE: Call scrape for this operation; for sibling workflows use search, extract_contacts, extract_products. WHEN NOT TO USE: Do not call for unrelated mutations. PARAMETER INTERACTIONS: Pass url, response_format to scope execution; optional fields refine filtering when set and use safe defaults when omitted. Read-only and idempotent; failed calls do not mutate state.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "url": {
          "maxLength": 2048,
          "minLength": 8,
          "type": "string",
          "description": "The full public http(s) address of the page."
        },
        "response_format": {
          "default": "all",
          "enum": [
            "text",
            "markdown",
            "all"
          ],
          "type": "string",
          "description": "Use \"markdown\" to get the page's main content as Markdown in data.markdown, the best form for reading or summarising. \"all\" (the default) and \"text\" return the standard fields: text, links, metadata and a quality score.",
          "minLength": 1,
          "maxLength": 2048
        },
        "return_html": {
          "default": false,
          "type": "boolean",
          "description": "Also return the page's raw HTML in data.html (up to 2 MB). Not with extract."
        },
        "render": {
          "default": false,
          "type": "boolean",
          "description": "Run the page's JavaScript in a browser first, for pages that build their content in the browser. Costs more."
        },
        "wait_ms": {
          "default": 500,
          "maximum": 3000,
          "minimum": 0,
          "type": "integer",
          "description": "Milliseconds to wait after the page loads. Needs render=true."
        },
        "wait_for": {
          "maxLength": 200,
          "minLength": 1,
          "type": "string",
          "description": "A CSS selector to wait for before reading. Needs render=true."
        },
        "extract": {
          "additionalProperties": {
            "additionalProperties": false,
            "properties": {
              "selector": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "attribute": {
                "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$",
                "type": "string"
              },
              "multiple": {
                "default": false,
                "type": "boolean"
              }
            },
            "required": [
              "selector"
            ],
            "type": "object"
          },
          "maxProperties": 10,
          "type": "object",
          "description": "Named fields to pull out with a CSS selector, for example {\"heading\":{\"selector\":\"h1\"},\"links\":{\"selector\":\"a\",\"attribute\":\"href\", \"multiple\":true}}. One tag, class, ID or attribute selector each. Static pages only."
        },
        "mode": {
          "default": "manual",
          "enum": [
            "manual",
            "auto"
          ],
          "type": "string",
          "description": "\"manual\" (the default) does what render says. \"auto\" fetches the page plainly and renders it only when it looks empty; it holds up to max_cost credits and charges what it used.",
          "minLength": 1,
          "maxLength": 2048
        },
        "max_cost": {
          "maximum": 5,
          "minimum": 1,
          "type": "integer",
          "description": "With mode=auto, the most to spend: 1 never renders, 5 may render."
        },
        "min_quality_score": {
          "maximum": 100,
          "minimum": 0,
          "type": "integer",
          "description": "Refuse the page, at no charge, when its quality score is below this."
        },
        "country": {
          "pattern": "^[a-zA-Z]{2}$",
          "type": "string",
          "description": "Two-letter country code for the language headers of the request, for example ae or gb. It does not route the request through that country.",
          "minLength": 1,
          "maxLength": 2048
        },
        "idempotency_key": {
          "type": "string",
          "minLength": 16,
          "maxLength": 128,
          "pattern": "^[A-Za-z0-9_.:-]+$",
          "description": "Optional. Send the same key (16 to 128 letters, digits, _ . : -) to retry this exact call safely: a retry within 24 hours returns the first result and is not charged again."
        }
      },
      "required": [
        "url"
      ],
      "additionalProperties": false
    },
    "annotations": {
      "title": "Read a web page",
      "readOnlyHint": true,
      "destructiveHint": false,
      "idempotentHint": true,
      "openWorldHint": true
    },
    "outputSchema": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "description": "Execution status."
        },
        "data": {
          "type": "object",
          "description": "Structured tool result."
        }
      },
      "required": [
        "status",
        "data"
      ]
    }
  },
  "auto_generated_a2a_skill_1_preview": {
    "id": "scrape",
    "name": "Scrape",
    "description": "Read one public web page and return its content: the main text (as Markdown with response_format=\"markdown\"), links, metadata and a quality score, plus the raw HTML if you ask (return_html). Set render=true for pages tha",
    "tags": [
      "mcp",
      "a2a",
      "x402",
      "scrape"
    ]
  },
  "signed_mcp_lock_preview": {
    "target": "https://vera.waggle.ae/v1",
    "tools_hash": "sha256:11c35e4a3e19d51886c88cc6a185cb7582faef8ab22c3f0c506e36ec138dcca3",
    "tdqs": 5.0,
    "protocols": [
      "mcp-2025-03-26",
      "a2a-0.2.1",
      "x402-v2-bazaar",
      "stripe-mpp-32042"
    ],
    "signature": "asr_lock_f30279c1cf65158d5f9972802b54275c"
  },
  "locked_bundle_contents": "Unlock remaining 7 compiled 5.0/5.0 tools + full /.well-known/agent-card.json + /.well-known/mcp.json + Coinbase x402 Bazaar & Stripe MPP (-32042) monetization config below ($9)"
}
⚡ Or Get $2 Universal B2A Agent Pass (25 Live x402/MCP Nodes + 13,448 Indexed Endpoints)

Verified 5.0/5.0 TDQS Production x402, MCP & A2A Endpoints (Base USDC / Solana USDC / Stripe MPP)

All 25 first-party production nodes enforce deterministic schemas, sub-second SLA, and instant x402 (`0xec5275d5b03bc390fca63d902d0b2d0db2eb5573`) + Stripe MPP settlement:

1. AgentDiet Token Distiller ($0.001) — /v1/distill | /mcp 2. X402-Broker 13,400+ Router ($0.002) — /v1/x402-broker 3. Prompt-Guard Firewall ($0.002) — /v1/prompt-guard 4. JSON-Repair Validator ($0.001) — /v1/json-repair 5. SERP-Extract Grounding ($0.002) — /v1/serp-extract 6. LLMs.txt Compiler ($0.005) — /v1/llms-generator 7. GitHub Repo Auditor ($0.005) — /v1/github-audit 8. Company Tech-Stack Enrich ($0.005) — /v1/company-enrich 9. SEC EDGAR 10-K/10-Q Intel ($0.008) — /v1/sec-intel 10. Domain OSINT & TLS Recon ($0.003) — /v1/domain-osint 11. Email MX/SPF/DMARC Verifier ($0.002) — /v1/email-verify 12. ArXiv AI/CS Paper Digest ($0.003) — /v1/arxiv-digest 13. E-Commerce Price Extractor ($0.008) — /v1/shopify-spy 14. x402 Endpoint SLA Auditor ($0.005) — /v1/x402-audit 15. On-Chain Rug & Honeypot Scanner ($0.008) — /v1/onchain-risk 16. DEX Liquidity & Slippage Intel ($0.005) — /v1/token-intel 17. Polymarket Live Odds Feed ($0.004) — /v1/polymarket-odds 18. DeFi Stablecoin APY Scanner ($0.005) — /v1/defi-yield 19. HackerNews Sentiment Pulse ($0.003) — /v1/hn-pulse 20. Shopify Catalog & App Intel ($0.006) — /v1/shopify-intel 21. DEX Whale Momentum Scanner ($0.006) — /v1/whale-momentum 22. 5-Min DeFi/DEX Alpha Stream ($0.005) — /v1/alpha-stream 23. 4-Protocol MCP TDQS Compiler ($0.008) — /v1/mcp-compiler 24. Real-Time OSV/CVE Vulnerability Intel ($0.004) — /v1/cve-intel 25. Assay Pre-Flight Security Certifier ($0.005) — /v1/certify