{"name":"com.agentery/agentery","slug":"agentery","title":null,"description":"Price benchmarks, alternatives & daily price history across 17,000+ AI agents and MCP servers.","url":"https://mcp.market/server/agentery","rating":null,"grade":"C","score":56,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":6,"ok":6,"last_checked_at":"2026-09-20T19:56:18.307Z","last_ok_at":"2026-09-20T19:56:18.307Z","latency_ms":611},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://agentery.com","version":"1.8.0","remotes":[{"type":"streamable-http","url":"https://agentery.com/api/mcp"}],"packages":[],"tools":[{"name":"compare_providers","description":"Step 3 of the buyer path. Side-by-side capability + plan-level prices for 2–6 providers (e.g. the Pro tier). Inputs are resolved to REAL providers — exact handle, then exact display name — and are NEVER silently swapped for a fuzzy match: unknown inputs come back in `unresolved_inputs` with `suggested_matches` and a ready-to-retry `corrected_call`, and if EXACTLY ONE input is real (the other was invented/mistyped) it does NOT dead-end — it returns `comparison_status: compared_with_market_peers`, comparing the real provider against its actual in-market competitors — its nearest providers by text-embedding — (listed in `compared_against_peers`, with a `recovery_note`); only when ZERO inputs resolve does it return `comparison_status: insufficient_valid_providers`. When the compared providers are different delivery types it sets `mixed_provider_types` + a `comparability_warning` (a hosted agent and an MCP server are not directly equivalent). Full evidence-scored cards for 2-6 handles side by side, each with observed price, all-time community upvotes and provider type. Each card carries the full how_to_connect object (website, docs, MCP endpoint + config_snippet, A2A card, API) so you can act on the winner directly. Each card also carries `reported_success` — the machine-reported outcome rate from report_outcome (null until 5+ distinct correlated reporters in 90 days). Report your own outcome after using the winner. Accepts `provider_ids` (aliases: handles, ids; a comma-separated string is also accepted). Use after search_providers or research_capability; when a compared provider is over budget or weakly matched, inline `suggested_alternatives` are returned.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"provider_ids":{"type":"array","items":{"type":"string"},"description":"2-6 provider handles from search_providers/market_gaps, e.g. [\"openhands\",\"lexaclaw\"]"}},"required":["provider_ids"]}},{"name":"create_custom_benchmark","description":"Create a PRIVATE custom benchmark (a saved, calculated peer cohort) over Agentery's data — no account needed. Two modes: (A) explicit members: pass `members` (a list of exact handles; product names/domains resolve where unambiguous). (B) fork a market: pass `base_niche` (its slug) plus optional `remove`/`add`. Returns a one-time secret `benchmark_id` (cb_… token) — store it; it's your only key. Use it later in get/update/delete and in market_report/get_price_index/get_price_index_history. Ambiguous names are returned as candidates, never silently resolved; unresolved inputs block creation unless allow_partial:true. All prices/history are computed from Agentery's immutable observations; canonical market data is never changed.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Optional private label"},"members":{"type":"array","items":{"type":"string"},"description":"Mode A: exact handles (preferred), product names or domains"},"base_niche":{"type":"string","description":"Mode B: slug of the canonical market to fork"},"remove":{"type":"array","items":{"type":"string"},"description":"Mode B: members to drop from the forked market"},"add":{"type":"array","items":{"type":"string"},"description":"members to add"},"allow_partial":{"type":"boolean","description":"Create with only the resolved members when some inputs don't resolve (default false)"}}}},{"name":"delete_custom_benchmark","description":"Disable access to a custom benchmark. Keeps only a minimal audit record; no underlying Agentery data is touched. Pass `benchmark_id`.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"benchmark_id":{"type":"string","description":"Your cb_ token"}},"required":["benchmark_id"]}},{"name":"demand_signals","description":"Call this to see what providers are being SEARCHED FOR but don't exist yet: capability queries that returned ZERO results on this MCP server, aggregated and ranked by miss count. A live unmet-demand signal for founders and investors — pair a hot signal with market_report/market_gaps to size the gap. Empty args ({}) return the current ranked unmet-demand list. An empty list is honest (status insufficient_evidence + next_step): it is never filled from search popularity, page views or trending queries.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"type":"number","description":"Max signals (1-50, default 20)"}}}},{"name":"find_market","description":"Map a natural-language task, capability or service to its live MARKET — the semantic neighbourhood of the closest-matching providers, found by text-embedding nearness (NO fixed category). For buyers ('a provider that monitors competitor pricing'), sellers ('what should I charge for lead-generation automation') or sizing a space. Pricing-intent boilerplate is stripped before matching. Returns the market label, how many providers are in the neighbourhood and how many are priced, `nearest` (the closest providers with observed price and relevance/cosine), and `pricing_by_tier` — median, mean, stdev, p25/p75, min–max range and n per buyer tier (individual/pro/team_sme/enterprise), computed by the canonical pricing engine over the priced neighbourhood. match_certainty is 'confident' when real neighbours exist and 'uncertain' when nothing is close (pricing WITHHELD). Accepts `task` (aliases: query, q). For the full market read + shortlist in ONE call, use research_capability instead. Read-only. When there is no strong market the response says so: status no_match or thin_coverage (nearest neighbourhood labelled partial_match) with a plain explanation and a next_step — it never invents a market.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"task":{"type":"string","description":"A natural-language task, capability or service, e.g. 'reconcile supplier invoices'"},"query":{"type":"string","description":"Alias for task (back-compat) — a natural-language task, capability or service"}},"anyOf":[{"required":["task"]},{"required":["query"]}]}},{"name":"get_custom_benchmark","description":"Get a private custom benchmark's current report: members, current stats (headline median/quartiles only when ≥3 comparable priced members — monthly, per-seat and per-call prices are never blended), buyer-tier / provider-type / pricing-unit cohorts, historical index, and data coverage. Pass `benchmark_id` (your cb_ token) as an ARGUMENT.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"benchmark_id":{"type":"string","description":"Your cb_ token (bearer secret; passed as an argument, never a URL)"},"version":{"type":"number","description":"Optional benchmark version (default latest)"},"as_of":{"type":"string","description":"Optional YYYY-MM-DD — reproduce the exact stats + index as they were on that date, using this version's fixed membership"},"response_mode":{"type":"string","enum":["summary","full"],"description":"full includes the index series"}},"required":["benchmark_id"]}},{"name":"get_price_index","description":"Call this for the CURRENT level of the Agent Economy Price Index (AEPI) — a chained like-for-like index over observed provider/MCP pricing (base 100 = 29 Jun 2026). It is an INDEX LEVEL, not a market price or tradeable asset. Returns the whole-economy headline index level with change_1d/change_7d/change_30d, as_of, like_for_like_pair_count, status and the methodology version, PLUS the same fields for the four buyer tiers (Individual, Pro, Team/SME, Enterprise). `provider_type` returns the standalone index for one delivery type (provider or mcp, own base 100) — agents and MCPs price and move differently. `tier` filters to one buyer tier; response_mode 'full' adds exact sub-0.01% moves and repricing counts. Reads the SAME canonical series as the /aepi page, so the MCP and website agree for a given timestamp. (Also accepts a `benchmark_id` to read a private custom benchmark's current index.) The economy index is whole-market by design — for pricing on a specific capability use market_report or price_benchmark.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"provider_type":{"type":"string","enum":["all","provider","mcp"],"description":"'all' (default) = the combined whole-economy index; 'agent' or 'mcp' = the standalone index over just that delivery type (own base 100). Agents and MCPs price and move differently, so an MCP buyer should read the 'mcp' index and an agent buyer the 'agent' index."},"tier":{"type":"string","enum":["all","individual","pro","team","enterprise"],"description":"Filter to one buyer tier ('team' = Team/SME). Default 'all'."},"response_mode":{"type":"string","enum":["summary","full"],"description":"'summary' (default) or 'full' (adds exact sub-0.01% moves and repricing counts)."}}}},{"name":"get_price_index_history","description":"Call this for the canonical DATED index SERIES (to chart or analyse movement) of the AEPI — the same chained like-for-like series the /aepi page plots. Every point is an index level (base 100), never a price. Returns the whole-economy headline series, or a single buyer tier's series when `tier` is set. `provider_type` returns the standalone 'agent' / 'mcp' series (own base 100). `period` selects '30d' (default), '90d' or 'all'. response_mode 'summary' (default) returns date + index_level points plus the window change; 'full' adds gap flags. Returns an honest status (insufficient_history) rather than a fabricated series when data is too thin. (Also accepts a `benchmark_id` to read a private custom benchmark's history.) The economy index is whole-market by design — for pricing on a specific capability use market_report or price_benchmark.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"provider_type":{"type":"string","enum":["all","provider","mcp"],"description":"'all' (default) = the combined whole-economy series, or the standalone 'agent' / 'mcp' series (own base 100)."},"tier":{"type":"string","enum":["all","individual","pro","team","enterprise"],"description":"Return one buyer tier's series ('team' = Team/SME). Default 'all' = the headline series."},"period":{"type":"string","enum":["30d","90d","all"],"description":"History window. Default '30d'."},"response_mode":{"type":"string","enum":["summary","full"],"description":"'summary' (default, compact) or 'full'."}}}},{"name":"get_provider","description":"Call this for the public directory card of one provider by handle or registration number: bio, source URLs, X-verification status, entity type, community rating and structured profile when available.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"handle":{"type":"string","description":"Provider handle, e.g. 'openhands'"},"regNum":{"type":"number","description":"Registration number, e.g. 2432"}}}},{"name":"get_provider_profile","description":"Step 2 of the buyer path. Full profile for ONE provider — plans, pricing model, liveness, evidence — use after search_providers returns handles. Evidence-scored profile: task_performed, inputs/outputs, integrations, protocols, industry_fit, autonomy_level, human_approval_needed, observed price, trust signals, evidence_quality, entity_type, regulated_data_suitability, evidence_urls, last_checked. Includes the full how_to_connect object — website, docs, any vendor-published MCP endpoint (with a copy-paste client config_snippet), A2A agent card and API surface — the info needed to actually use the listing; fields are null when the vendor publishes no endpoint (never guessed). Also carries `reported_success` — machine-reported outcome rate from report_outcome (null until 5+ distinct correlated reporters in 90 days). If you use the listing, call report_outcome afterwards.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"provider_id":{"type":"string","description":"The provider_id/handle returned by search_providers or compare_providers"}},"required":["provider_id"]}},{"name":"market_gaps","description":"Find where real demand is going unmet — computed demand-first in the raw text-embedding space (NO fixed categories). A gap = a cluster of real user requests (mined from live MCP search telemetry) that sits FAR from any PAID provider. For each gap it returns: the demand phrasing, demand_mass (how many similar requests cluster with it), nearest_paid_similarity (cosine to the closest paid provider — low = under-served) and that closest paid provider. Also returns demand_queries and paid_supply counts. Honestly returns few or no gaps while query volume is still low — it sharpens as usage grows. No arguments needed ({}); `limit` caps the list.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"sector":{"type":"string","description":"Optional sector filter, e.g. 'legal', 'healthcare'"},"rank":{"type":"string","enum":["gaps","hot"],"description":"gaps (default): whitespace with money, crowded excluded. hot: most active by market pulse, crowding ignored."},"limit":{"type":"number","description":"Max gaps (1-50, default 15)"}}}},{"name":"market_report","description":"Deep-dive ONE market before building or investing — the market is the semantic neighbourhood of your natural-language query (nearest providers by text embedding, NO fixed category). Every field is MEASURED: the observed-pricing benchmark separated by provider type and buyer tier (median, mean, stdev, p25/p75, min–max range and n via the canonical pricing engine), how many providers are in the neighbourhood and how many are priced, and the top providers already competing there with their observed price and relevance. Pass `query` (a natural-language capability or market, e.g. 'customer support chatbot'). For market + pricing + a ready shortlist in one call, use research_capability.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Natural-language capability or market, e.g. 'customer support chatbot' or 'ai phishing detection'."},"response_mode":{"type":"string","enum":["summary","full"],"description":"'summary' (DEFAULT) returns a compact block: neighbourhood counts, per-type/per-tier price cohorts and top providers. 'full' returns everything incl. the full member list."}},"required":["query"]}},{"name":"price_benchmark","description":"Fair-price benchmarks for a capability described in natural language. The MARKET is the semantic neighbourhood of your query — the nearest providers by text embedding, with NO fixed category — SEPARATED BY provider type (provider / mcp) and buyer tier (individual / pro / team_sme / enterprise). Each cohort reports median, mean, stdev, p25/p75, min–max range and n; a single blended provider+MCP median is NEVER the default. Supply provider_type and buyer_tier whenever the user makes them known (e.g. 'an individual MCP', 'a professional provider', 'enterprise'); when neither is known the tool returns the populated per-type/per-tier cohort matrix. Prices come from the canonical pricing engine run over the priced members of the neighbourhood, so the figures match the rest of the site to the digit. Pass `query` (the natural-language capability); `task` is accepted as an alias for the query text. When nothing priced is semantically close it returns resolved:false with a note, never a fabricated figure.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"niche":{"type":"string","description":"Legacy alias of `query`, kept for older clients — prefer `query`."},"sector":{"type":"string","description":"Sector name, e.g. 'legal' (ignored if a query is given)"},"provider_type":{"type":"string","enum":["provider","mcp","api","all"],"description":"Delivery type being priced. Set when the user says provider, MCP or API. Omit (or 'all') to get the per-type matrix instead of a blended figure. 'api' is recognised but not yet a separate commercial cohort (folded into provider)."},"buyer_tier":{"type":"string","enum":["individual","pro","team_sme","enterprise","all"],"description":"Buyer tier being priced. Set when the user describes who is buying (an individual, a professional, a team/SME, or an enterprise). An individual licence must never be represented by the SME or enterprise price."},"pricing_unit":{"type":"string","description":"Optional pricing unit to hold constant (e.g. 'flat', 'per_seat', 'per_agent'). Incompatible units are never combined."},"response_mode":{"type":"string","enum":["summary","full"],"description":"'summary' (default): compact per-type/per-tier benchmark matrix. 'full': also returns the deprecated blended legacy block + AEPI index."}}}},{"name":"rank_providers_for_workflow","description":"PARTNER-ONLY (Bearer key required). Given a business context and its workflow steps, return ranked provider candidates for EACH step — structured, scored (match_score 0-100) matches with match_reasons and cautions. Built for app builders (e.g. Builtery) assembling automations. Reads each provider's analysed site profile; never invents capabilities; returns 'unclear' where evidence is missing.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"business_context":{"type":"object","description":"company_description, industry, region, existing_tools[], automation_posture (cautious|balanced|agent_native), regulated_data (none|personal|health|financial|legal|children|unknown)"},"workflow_steps":{"type":"array","description":"Each: step_id, step_name, step_description, inputs[], desired_outputs[], required_integrations[], human_approval_preference (always|sometimes|not_needed|unknown)"},"limit_per_step":{"type":"number","description":"Max candidates per step (1-25, default 8)"}},"required":["workflow_steps"]}},{"name":"report_outcome","description":"After you use a listed provider, report whether it worked — reports are correlated with your recent retrievals, improve ranking accuracy, and unlock higher rate limits for contributors. Only reports we can match to one of YOUR retrievals (search_providers / get_provider_profile / compare_providers / suggest_alternatives naming that provider, last 48h) carry weight; unmatched reports are stored but unweighted. Aggregates surface as `reported_success` on profile/comparison cards once 5+ distinct reporters exist (90-day window). Callers with 5+ correlated reports in 30 days get a doubled per-minute rate limit. Send an x-agentery-key header to keep one reporter identity across IPs (it is stored only as a hash).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"agent_id":{"type":"string","description":"Handle of the provider you used, as returned by search_providers/get_provider_profile/compare_providers"},"outcome":{"type":"string","enum":["worked","failed","partial"],"description":"Did the provider accomplish the task you hired it for?"},"task_type":{"type":"string","description":"Optional short task label, e.g. 'code-review', 'lead-enrichment'"},"error_class":{"type":"string","description":"Optional failure class, e.g. 'timeout', 'auth', 'wrong-output', 'endpoint-down'"},"latency_ms":{"type":"number","description":"Optional end-to-end latency of the provider in milliseconds"},"note":{"type":"string","description":"Optional free-text detail (capped at 300 chars)"}},"required":["agent_id","outcome"]}},{"name":"research_capability","description":"START HERE for provider procurement. ONE call turns a task into: (1) its live MARKET — the semantic neighbourhood of the closest-matching providers, found purely by text-embedding nearness (NO fixed category), with the relevance floor and how many providers cleared it; (2) current pricing context — comparable price range and median with mean, stdev and n, plus provider/priced counts; and (3) a ready-to-compare provider shortlist — each with observed price, market_position (below/in-line/above market), integration status, match score, and handles collected in `compare_ready`. Retrieval is 100% nearest-neighbour by text embedding: providers are matched on what they actually DO, never on an assigned label. REUSES the canonical pricing/search engines (no new pricing logic). Also returns `suggested_alternatives` (cheaper or stronger options) and a `result_fingerprint` (+ `cached`) so repeat calls are cheap. It does NOT run the comparison — pass `compare_ready` to compare_providers once you have finalists. Use the lower-level tools (find_market, market_report, price_benchmark, search_providers) for finer control. Aliases: `task` also accepts `query` / `q`.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"task":{"type":"string","description":"Required — the natural-language capability/task, e.g. 'reconcile supplier invoices' or 'litigation-analysis provider'. Aliases: query, q."},"buyer_tier":{"type":"string","enum":["individual","pro","team","enterprise"],"description":"Optional buyer tier to price against ('team' = Team/SME)."},"max_monthly_usd":{"type":"number","description":"Optional budget ceiling in USD/month — filters the shortlist and drives suggested_alternatives."},"integrations":{"type":"array","items":{"type":"string"},"description":"Optional required integrations, e.g. [\"zendesk\",\"slack\"] — soft preference; integration status is reported per provider."},"sort":{"type":"string","enum":["match","price_asc"],"description":"Shortlist ordering. Default 'match'."},"limit":{"type":"number","description":"Shortlist size (1-12, default 5)."},"provider_type":{"type":"string","enum":["auto","provider","mcp","api","any"],"description":"Preferred delivery type. 'auto' (default) infers from the task; note 'AI agent' phrasing is treated as generic (neutral), not an agent-only filter. When a type is explicit (mcp/api/agent) matching providers are SOFT-RANKED to the top and the rest are kept as clearly-labelled cross_type_alternative entries — never hard-filtered (no zero-result cliff), and the functional match is never changed. Every provider is labelled with provider_type (public values: agent | mcp | api | unknown) + type_match_score; provider_type{type_rank_boost_applied, boosted_provider_type, result_counts_by_type} is returned."},"response_mode":{"type":"string","enum":["summary","full"],"description":"'summary' (default) or 'full' (adds tier cohorts, coverage and raw results)."}},"required":["task"]}},{"name":"search_providers","description":"Start here for buying research. Free-text search for providers / MCP servers by what they do — example: 'supplier invoice reconciliation'. Then call get_provider_profile on the best handles and compare_providers on the shortlist (e.g. the Pro tier). research_capability is a one-call shortcut (test first). Filtered free-text search over the directory, ranked with match_score and match_reasons. Each result includes an observed-price object; filter by max_monthly_usd/billing and sort by price_asc to shop on value-for-money. Results include how_to_connect (website, docs, mcp.endpoint when the vendor publishes one) — the link/endpoint needed to actually use the listing; get_provider_profile has the full version with a copy-paste MCP config snippet. If you end up using one of the results, call report_outcome afterwards — it sharpens future rankings and raises your rate limit. Accepts `query` (aliases: q, text) — an unknown query key is never silently ignored. research_capability collapses market + pricing + shortlist into ONE call — treat it as a shortcut and test its grounding against this three-step path first.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Free-text capability query, e.g. 'customer support provider with Zendesk integration'"},"filters":{"type":"object","description":"Optional: industry_fit[], integrations_available[], entity_type[] (agent|tool|infrastructure|service|marketplace|content-community), autonomy_level[] (assistant|workflow automation|agentic|infrastructure), minimum_evidence_quality (low|medium|high)"},"max_monthly_usd":{"type":"number","description":"Drop providers whose observed lowest paid tier exceeds this (USD/month). Providers with no observed public price still pass unless require_public_price is true."},"require_public_price":{"type":"boolean","description":"Only return providers with an observed public price (default false)"},"billing":{"type":"array","items":{"type":"string"},"description":"Only providers with one of these observed billing models, e.g. [\"free\",\"freemium\",\"subscription\",\"usage\"]"},"sort":{"type":"string","enum":["match","price_asc"],"description":"match (default) or price_asc (cheapest observed price first; unpriced providers last)"},"provider_type":{"type":"string","enum":["provider","mcp","api","platform","infrastructure"],"description":"Filter to one provider type — the audited classification dimension (same as the website type chips and AEPI facets); result labels always match this filter. Omit for all types."},"limit":{"type":"number","description":"Max results (1-50, default 20)"}}}},{"name":"suggest_alternatives","description":"Call this when a shortlisted provider is too expensive, unreachable or a poor fit: substitutes for one known provider, ranked by text-embedding nearness to that provider's OWN profile — the closest-matching providers first (NO category lookup) — each with observed price, endpoint liveness, community upvotes and how_to_connect (website, docs, mcp endpoint) so a substitute is immediately usable. Set cheaper_only to shop down from the subject's price. Accepts `agent_id` (aliases: handle, id). These substitutes are also surfaced automatically inside research_capability and compare_providers, so you rarely need to call this separately.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"agent_id":{"type":"string","description":"Handle of the provider to find substitutes for, e.g. 'openhands'"},"cheaper_only":{"type":"boolean","description":"Only keep alternatives priced below the subject's lowest monthly price. Free/freemium providers always qualify; providers with no observed price are excluded. Default false."},"limit":{"type":"number","description":"Max alternatives (1-10, default 5)"}},"required":["agent_id"]}},{"name":"update_custom_benchmark","description":"Add/remove members or rename a custom benchmark. Creates a NEW immutable version (the previous version stays fully reproducible) and returns the exact change-impact on the median/quartiles/index. Pass `benchmark_id`.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"benchmark_id":{"type":"string","description":"Your cb_ token"},"add":{"type":"array","items":{"type":"string"}},"remove":{"type":"array","items":{"type":"string"}},"rename":{"type":"string"}},"required":["benchmark_id"]}}],"scan":{"score":56,"grade":"C","scanned_at":"2026-09-20T11:37:50.529Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T11:37:50.454Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":17,"max":20,"notes":["remote reachable in 2195ms"]},"poisoning":{"score":15,"max":15,"notes":["19 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 3 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://agentery.com/api/mcp","reachable":true,"authRequired":false,"latencyMs":2195,"serverInfo":{"name":"agentery","version":"1.8.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://agentery.com/apple-icon.png?219baf012f1d5fd3","source":"site","width":180,"height":180},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}