# Mekler AI

> Research, inference, data/web/email tools, and x402 conformance, service catalog and grade feeds.

- name: ai.mekler/agent-discovery
- version: 0.1.13
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 69/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.mekler%2Fagent-discovery
- tools: https://api.protogrid.dev/v1/servers/ai.mekler%2Fagent-discovery/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "agent-discovery": {
      "type": "http",
      "url": "https://api.mekler.ai/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 45
- drivers: +dns-namespace +reachable +uptime-100% +updated-0d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 69/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 22 of 24 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: referral_receipts (destructiveHint, idempotentHint, openWorldHint); list_conformance_checks (destructiveHint, idempotentHint, openWorldHint); get_service (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 3,028 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 25 tool changes in 30 days
- fail `stability.rug_pull`: 9 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 24, about 3,028 tokens to load them all
- tool set hash: 7dccb29fcfbc7d9228421ef77a37f71b
- tools last changed: 2026-10-19T19:29:51.250Z
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.mekler/agent-discovery.svg)](https://protogrid.dev/servers/ai.mekler/agent-discovery)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-19 `update_listing_preferences` added
  - Use X-Mekler-Listing-Control and the expected revision to hide a listing, suppress branding or revoke access. Domain proof is rechecked after seven days; failed, stale, revoked or expired credentials deny control. Concurrent writes return 409. Suppression affects current reads, new exports/feed pages and old search cursors; previously purchased snapshots remain recoverable. Never signs payments.
- 2026-10-19 `confirm_ownership_proof` added
  - Confirm a one-hour domain challenge with the same private requester key. Exact HTTPS origin and path must match. Returns a 90 day listing-control credential; identical retries recover that grant. A new proof revokes prior credentials. Confirmation does not approve branding or change grades. Never signs payments.
- 2026-10-19 `start_ownership_proof` added
  - Start a one-hour domain challenge bound to your private random 32-byte requester key in lowercase hex. Publish the returned JSON exactly at its HTTPS well-known URL. Keep the requester key private. A completed scan is required before confirmation. No payment or target credentials are sent. Never signs payments.
- 2026-10-19 `list_grade_changes` added
  - Read ordered new, grade_changed and rescanned events with previous grades and scores. Default 200, maximum 1000; signed watermark cursors. History retains 30 days or 50000 events; expired cursors return 410. Costs 0.01 USDC per page on Base or Solana. Use a fresh idempotency key per page; retain the original body and proof for exact recovery. Never signs payments.
- 2026-10-19 `export_listings` added
  - Export up to 10000 visible scanned x402 services with grade history, first seen, scan counts, provenance and explicit truncation. Returns gzip+base64 JSON and a digest; large results use a 60 second signed download URL. Costs 0.25 USDC on Base or Solana. Reuse the original body and payment proof for exact 30 day result recovery. Never signs payments.
- 2026-10-19 `retrieve_listing` added
  - Retrieve one visible scanned service, current grades, first seen, scan count and the latest 100 grade observations. Identity-reviewed branding claims remain unverified. Hidden or unknown listings return 404. No paid delivery certification. Never signs payments.
- 2026-10-19 `search_listings` added
  - Search scanned x402 services by text, host, category, grade, owner verification or featured status. Default 20, maximum 100; signed snapshot cursors last 24 hours. Sort by recency or grade. Names require identity review; branding claims remain unverified. Current hiding and suppression apply to old cursors too. Never signs payments.
- 2026-10-19 `scan_origin` changed (description, inputSchema) **meaning changed**
  - before: Start or recover an asynchronous x402 conformance scan. Optional quote_mode fast offers a payable first 402; resend the same input with payment_signature, retain the job/capability and poll. Default retains compute-first admission. Never signs payments.
  - after: Start or recover an asynchronous x402 conformance scan. For new origin-only calls, this MCP tool defaults to quote_mode fast and returns an unsigned 402 quote without starting a scan. Capability-only recovery requires the original input or proof; use get_scan_status for capability polling. Resend the same arguments with payment_signature only after independent payment authorization. Supplying idempotency_key without quote_mode retains compute-first admission. Save the job/capability and poll. Never signs payments.
- 2026-10-09 `scan_origin` changed (description, inputSchema) **meaning changed**
  - before: Start or recover an asynchronous x402 conformance scan. Initial call returns a recovery capability; poll status, request a quote when ready, then supply an explicitly signed payment_signature. Never signs a payment.
  - after: Start or recover an asynchronous x402 conformance scan. Optional quote_mode fast offers a payable first 402; resend the same input with payment_signature, retain the job/capability and poll. Default retains compute-first admission. Never signs payments.
- 2026-10-07 `list_conformance_checks` added
  - Read the versioned 25-check linter and separate 14-check compliance catalogs, grading rules and unknown-evidence semantics.

Full history: https://api.protogrid.dev/v1/servers/ai.mekler%2Fagent-discovery/changes

## Remotes

- https://api.mekler.ai/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (24)

- `confirm_ownership_proof`: Confirm a one-hour domain challenge with the same private requester key. Exact HTTPS origin and path must match. Returns a 90 day listing-control credential; identical retries recover that grant. A new proof revokes prior credentials. Confirmation does not approve branding or change grades. Never signs payments.
- `export_listings`: Export up to 10000 visible scanned x402 services with grade history, first seen, scan counts, provenance and explicit truncation. Returns gzip+base64 JSON and a digest; large results use a 60 second signed download URL. Costs 0.25 USDC on Base or Solana. Reuse the original body and payment proof for exact 30 day result recovery. Never signs payments.
- `get_scan_report`: Read a completed public cached report by report_id. Reports expire after 24 hours; this tool never purchases a replacement.
- `get_scan_status`: Read a conformance job state with job_id and recovery_capability. Polling never starts work or settles payment.
- `get_service`: Get a complete public service or operation contract by slug, operation ID, name, or endpoint URL.
- `get_trial_access`: Get the service request and standard wallet-auth instructions. First signed execution enrolls automatically; no wallet funds or payment required.
- `get_trial_offer`: Read the adjustable free-use offer, wallet authentication, allowance and explicit paid transition.
- `list_conformance_checks`: Read the versioned 25-check linter and separate 14-check compliance catalogs, grading rules and unknown-evidence semantics.
- `list_grade_changes`: Read ordered new, grade_changed and rescanned events with previous grades and scores. Default 200, maximum 1000; signed watermark cursors. History retains 30 days or 50000 events; expired cursors return 410. Costs 0.01 USDC per page on Base or Solana. Use a fresh idempotency key per page; retain the original body and proof for exact recovery. Never signs payments.
- `referral_accept_terms`: Accept a newer version of the referral terms to keep earning. arguments: terms_version and terms_digest from referral_program. Call without proof to get a SIWx challenge, sign it with the referrer wallet, then call again with proof. No payment is authorized.
- `referral_acknowledge`: Mark notices already served by referral_notices as read up to a cursor. arguments: cursor (integer) and optional private_cursor. Call without proof to get a SIWx challenge, sign it with the referrer wallet, then call again with proof. No payment is authorized.
- `referral_notices`: Read published program notices and the referrer's private account events. arguments: optional cursor, limit (1-50) and private_cursor. Call without proof to get a SIWx challenge, sign it with the referrer wallet, then call again with proof. No payment is authorized.
- `referral_program`: Read current Mekler referral availability, terms and commission offer.
- `referral_receipts`: Page through a referrer's commission receipts, oldest first. arguments: optional cursor (last seen) and limit (1-50). Call without proof to get a SIWx challenge, sign it with the referrer wallet, then call again with proof. No payment is authorized.
- `referral_register`: Register a wallet as a Mekler referrer and receive a referral code. arguments: terms_version and terms_digest from referral_program, which explicitly accept those exact terms. Call without proof to get a SIWx challenge, sign it with the referrer wallet, then call again with proof. No payment is authorized.
- `referral_rotate`: Move a referral registration to a new wallet without losing history. arguments: old_wallet and new_wallet; then send proof (old wallet) and new_proof (new wallet). Call without proof to get a SIWx challenge, sign it with the referrer wallet, then call again with proof. No payment is authorized.
- `referral_status`: Read a registered referrer's code, referral link, accepted versus current terms and whether action is required. arguments: none. Call without proof to get a SIWx challenge, sign it with the referrer wallet, then call again with proof. No payment is authorized.
- `retrieve_listing`: Retrieve one visible scanned service, current grades, first seen, scan count and the latest 100 grade observations. Identity-reviewed branding claims remain unverified. Hidden or unknown listings return 404. No paid delivery certification. Never signs payments.
- `rotate_trial`: Write: request a wallet-rotation challenge with old_wallet/new_wallet/request_id; then submit old_proof/new_proof signed with both keys. Usage is preserved.
- `scan_origin`: Start or recover an asynchronous x402 conformance scan. For new origin-only calls, this MCP tool defaults to quote_mode fast and returns an unsigned 402 quote without starting a scan. Capability-only recovery requires the original input or proof; use get_scan_status for capability polling. Resend the same arguments with payment_signature only after independent payment authorization. Supplying idempotency_key without quote_mode retains compute-first admission. Save the job/capability and poll. Never signs payments.
- `search_listings`: Search scanned x402 services by text, host, category, grade, owner verification or featured status. Default 20, maximum 100; signed snapshot cursors last 24 hours. Sort by recency or grade. Names require identity review; branding claims remain unverified. Current hiding and suppression apply to old cursors too. Never signs payments.
- `search_services`: Find Mekler paid operations for a task, including exclusions and useful combinations.
- `start_ownership_proof`: Start a one-hour domain challenge bound to your private random 32-byte requester key in lowercase hex. Publish the returned JSON exactly at its HTTPS well-known URL. Keep the requester key private. A completed scan is required before confirmation. No payment or target credentials are sent. Never signs payments.
- `update_listing_preferences`: Use X-Mekler-Listing-Control and the expected revision to hide a listing, suppress branding or revoke access. Domain proof is rechecked after seven days; failed, stale, revoked or expired credentials deny control. Concurrent writes return 409. Suppression affects current reads, new exports/feed pages and old search cursors; previously purchased snapshots remain recoverable. Never signs payments.
