{"name":"com.wafergraph/wafergraph-mcp","slug":"wafergraph-mcp","title":"Wafergraph MCP","description":"Read-only MCP server for wafergraph.com's semiconductor & AI supply-chain data: 30 tools, no auth.","url":"https://mcp.market/server/wafergraph-mcp","rating":null,"grade":"B","score":73,"certified":false,"status":"active","category":"security","tags":["security"],"presence":{"score":20,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-08-31T22:28:03.000Z","license":"NOASSERTION"},"uptime":{"percent":100,"checks":22,"ok":22,"last_checked_at":"2026-09-24T19:02:07.991Z","last_ok_at":"2026-09-24T19:02:07.991Z","latency_ms":923},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/jasonpalmer1/wafergraph-mcp","website":null,"version":"1.2.0","remotes":[{"type":"streamable-http","url":"https://wafergraph-mcp.jwpalm99.workers.dev/mcp"}],"packages":[],"tools":[{"name":"analyze_portfolio_exposure","description":"Given a list of tickers or company ids, report that basket's aggregate exposure across supply-chain segments and countries, and flag where holdings share the same upstream suppliers (correlated single points of failure). Informational supply-chain analysis over public data, not investment advice.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"holdings":{"minItems":1,"maxItems":40,"type":"array","items":{"type":"string"},"description":"Tickers (e.g. ['NVDA','TSM']) or company ids. Up to 40."}},"required":["holdings"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"compare_companies","description":"Side-by-side comparison of 2-6 companies on the same fields, plus their shared and unique supply-chain counterparties. Cheaper and more aligned than several get_company calls when the question is comparative.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"ids":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"string"},"description":"Company ids (snake_case, e.g. ['tsmc','samsung_foundry']) or exact names. 2-6 of them."}},"required":["ids"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"compare_countries","description":"Side-by-side comparison of 2-5 countries: aligned rows for company count, segment mix, market-position mix, and priced market cap, plus which segments each country is uniquely present in or dominant in, and which segments they all share. country is the company's HEADQUARTERS country only, not a manufacturing-footprint field. A company headquartered here may fabricate, assemble, or test elsewhere — do not read this data as production geography.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"countries":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"string"},"description":"2-5 country names, e.g. ['Taiwan','South Korea','United States']. Case-insensitive; common short forms recognized."}},"required":["countries"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"filter_companies","description":"Structured multi-criteria screen over all 615 companies: exact segment/subsegment/country/market_position/public filters plus a market-cap range, sortable and paginated. Use this instead of search_companies when the question is a precise filter ('leader-position analog companies in Japan under $20B') rather than a free-text match. Unknown segment/subsegment/country values just return zero results rather than erroring — call get_segments or list_subsegments first if you're not sure a value is valid.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"segment":{"description":"Exact taxonomy segment id, e.g. 'foundry' (see get_segments).","type":"string"},"subsegment":{"description":"Exact taxonomy subsegment id, e.g. 'litho' (see list_subsegments).","type":"string"},"country":{"description":"Headquarters country, exact match, case-insensitive, e.g. 'Japan'.","type":"string"},"market_position":{"description":"Exact market_position: monopoly | leader | major | challenger | niche.","type":"string","enum":["monopoly","leader","major","challenger","niche"]},"public":{"description":"true = only publicly traded companies, false = only private ones. Omit for both.","type":"boolean"},"min_market_cap_usd_b":{"description":"Minimum market cap in USD billions (inclusive). Only ~72% of companies have a cap on file — see the response note when this is set.","type":"number"},"max_market_cap_usd_b":{"description":"Maximum market cap in USD billions (inclusive). Only ~72% of companies have a cap on file — see the response note when this is set.","type":"number"},"has_ticker":{"description":"true = only companies with a public ticker on file, false = only companies without one.","type":"boolean"},"sort_by":{"default":"market_cap","description":"Sort field. 'market_cap' sorts descending with unpriced companies last; 'name'/'country' sort ascending. Default 'market_cap'.","type":"string","enum":["market_cap","name","country"]},"limit":{"default":25,"description":"Max rows to return, 1-100. Default 25.","type":"integer","minimum":1,"maximum":100},"offset":{"default":0,"description":"Rows to skip, for paging past the first `limit`. Default 0.","type":"integer","minimum":0,"maximum":9007199254740991}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"find_chokepoints","description":"Rank supply-chain chokepoints: companies many others depend on, weighted by how concentrated their market position is. A chokepoint here means high downstream dependency plus monopoly/leader position, i.e. few substitutes. Scoring is a transparent heuristic over the public dataset, not a proprietary risk model.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"segment":{"description":"Restrict to one taxonomy segment id (see get_segments).","type":"string"},"limit":{"default":10,"description":"How many to return (1-25, default 10).","type":"integer","minimum":1,"maximum":25}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"find_common_suppliers","description":"The shared-upstream question over a set of companies: given 2-15 company ids/tickers, or a segment id (uses every company in that segment), rank suppliers by how many of the input companies they documentedly serve (e.g. 'serves 9 of 12'), with each supplier's market position and country. Also reports how many input companies had no documented suppliers at all, since that makes a low overlap number ambiguous.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"company_ids":{"description":"2-15 company ids, names, or tickers. Exactly one of company_ids/segment is required.","minItems":2,"maxItems":15,"type":"array","items":{"type":"string"}},"segment":{"description":"Use every company in this taxonomy segment id instead of an explicit list (see get_segments).","type":"string"},"limit":{"default":20,"description":"Max number of ranked suppliers to return (1-100, default 20).","type":"integer","minimum":1,"maximum":100}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"find_consolidation_hotspots","description":"Ranks taxonomy segments by M&A activity by mapping each deal's parties onto their companies' segments (matching by id, then falling back to case-insensitive name), then aggregating deal count and disclosed value per segment. Deals whose parties cannot be resolved to any dataset company are counted in unmapped_deals rather than dropped, so thinly-covered segments aren't silently underrepresented.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"default":12,"description":"How many ranked segments to return, 1-12 (there are 12 segments total).","type":"integer","minimum":1,"maximum":12},"sort_by":{"default":"deal_count","description":"Rank segments by number of deals ('deal_count') or by summed disclosed deal value ('value').","type":"string","enum":["deal_count","value"]}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"find_deals_by_company","description":"Every M&A deal a company took part in, split by role (as acquirer, as target, or other). Matches by dataset id first, then falls back to case-insensitive name matching — necessary because a deal's target is frequently not itself a company in this dataset and carries a null id (e.g. AMD's acquisition of Xilinx lists acquirer id 'amd' but target id null, name 'Xilinx'). Each matched deal carries a match_method ('id' or 'name') so weaker name-only matches are visible to the caller.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"company":{"type":"string","description":"Company id, exact name, or ticker to search for across all deal parties, e.g. 'amd', 'Xilinx', 'AMD'."}},"required":["company"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"find_paths_between","description":"Every documented supply path between two companies, following supplier->customer edges (e.g. 'how does NVIDIA actually depend on Shin-Etsu'). Searches up to max_depth hops in one or both directions and returns each path as an ordered list of companies, shortest first. Capped for combinatorial safety; absence of a path means undocumented, not disproven — see edge_coverage.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"from":{"type":"string","description":"Starting company id, name, or ticker."},"to":{"type":"string","description":"Target company id, name, or ticker."},"max_depth":{"default":3,"description":"Maximum path length in hops (edges). Default 3, hard-capped at 4 to bound the search.","type":"integer","minimum":1,"maximum":4},"direction":{"default":"either","description":"'downstream': paths where `from` supplies (directly or via intermediaries) to `to`. 'upstream': paths where `from` depends on `to` as a supplier. 'either': search both directions and label each path.","type":"string","enum":["upstream","downstream","either"]},"limit":{"default":10,"description":"Max number of paths to return (1-50, default 10).","type":"integer","minimum":1,"maximum":50}},"required":["from","to"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"find_similar_companies","description":"Nearest structural neighbours to one focal company, ranked by a transparent Jaccard-similarity score — not a market or competitive judgment. Use search_companies or resolve_ticker first if you only have a ticker or an approximate name, then pass the resolved id here.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Focal company id (snake_case, e.g. 'tsmc') or exact name to find neighbours for."},"limit":{"default":10,"description":"How many similar companies to return, 1-25. Default 10.","type":"integer","minimum":1,"maximum":25}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"find_single_source_dependencies","description":"Screen for (customer, subsegment) pairs where the customer has exactly ONE documented supplier in that subsegment — the highest-value documented-concentration risk screen in the dataset. Optionally scoped to customers in one segment or country. Ranked by the sole supplier's downstream importance (its total documented customer count).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"segment":{"description":"Restrict to customers in this taxonomy segment id (see get_segments). Omit for the whole dataset.","type":"string"},"country":{"description":"Restrict to customers headquartered in this country (case-insensitive exact match).","type":"string"},"limit":{"default":25,"description":"Max number of single-source pairs to return (1-100, default 25).","type":"integer","minimum":1,"maximum":100}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_company","description":"Full allowed profile for one company (by id or exact name) plus its supplier/customer supply-chain edges. Includes key_products (short list of named products/lines). Fields are deliberately limited to established/trust-checked data (see README field-discipline note).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Company id, snake_case (e.g. 'tsmc', 'asml') or exact company name."}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_country_exposure","description":"Geographic concentration of the supply chain: which countries host the companies in a given segment (or across all 12 segments), ranked by company count. Answers 'how concentrated in Taiwan is advanced lithography' style questions. Country is recorded for all 615 companies.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"segment":{"description":"Restrict to one taxonomy segment id (see get_segments). Omit for the whole dataset.","type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_country_profile","description":"Deep profile of one country's presence in wafergraph's semiconductor & AI supply-chain dataset: company count, segment breakdown, market-position breakdown, top companies by market cap, notable monopoly/leader companies, and inbound/outbound supplier-relationship edge counts across this country's border (computed from the supply-chain graph). country is the company's HEADQUARTERS country only, not a manufacturing-footprint field. A company headquartered here may fabricate, assemble, or test elsewhere — do not read this data as production geography.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"country":{"type":"string","description":"Country name, e.g. 'Taiwan', 'United States', 'South Korea'. Case-insensitive; common short forms (USA, UK, Korea) are recognized."}},"required":["country"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_dataset_stats","description":"The honesty tool: what this dataset actually contains and where it is thin. Live-computed per-field coverage for companies and deals, last_verified staleness distribution, supply-chain edge coverage, data source mode, and a plain-words list of known limitations. Call this before treating an absence of a company, deal, or edge as evidence it doesn't exist in the real market.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_deal","description":"Full record for one M&A deal by id: title, type, value, announced date, status, all parties with their resolved company refs where a dataset id exists (and the raw party name where it does not), summary, sources, and the per-deal confidence flag. Use get_deals or find_deals_by_company to find a deal id first.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Deal id as returned by get_deals/find_deals_by_company, e.g. 'amd_xilinx_2020'."}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_deals","description":"Search wafergraph's semiconductor & AI supply-chain M&A corpus (74 acquisitions/mergers, including notable terminated attempts) by title/summary substring and/or segment. Returns a compact list capped at 30 with a total match count.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Case-insensitive substring match against deal title and summary.","type":"string"},"segment":{"description":"Filter to deals where at least one named party is a company in this taxonomy segment id.","type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_ma_activity_summary","description":"Aggregate view of the full 74-deal M&A corpus: counts by year (from announced date), by deal type, and by status; total and median disclosed value; and the largest deals by value. Value figures are computed only over the subset of deals with a disclosed value_usd and are never extrapolated to cover the undisclosed ones.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"top_n":{"default":10,"description":"How many largest-by-value deals to return, 1-25 (default 10).","type":"integer","minimum":1,"maximum":25}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_segment_leaders","description":"Who runs a given layer of the semiconductor & AI supply chain: the companies at monopoly/leader market position in one taxonomy segment (or all 12 if none given), with country and market cap, plus a count of how many companies sit at each position (monopoly/leader/major/challenger/niche) in that segment. country is the company's HEADQUARTERS country only, not a manufacturing-footprint field. A company headquartered here may fabricate, assemble, or test elsewhere — do not read this data as production geography.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"segment":{"description":"A taxonomy segment id, e.g. 'foundry', 'eda_ip' (see get_segments). Case-insensitive. Omit to cover all 12 segments.","type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_segments","description":"The wafergraph taxonomy: 12 top-level supply-chain segments (materials through ai_datacenter) and their subsegments, each with a live company count, plus the market_position enum. Use this to discover valid `segment` values for search_companies/get_deals. Segment definitions are a versioned snapshot (see data.taxonomy_snapshot_date) while company counts are computed live.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_subsegment","description":"All companies in one segment+subsegment pair, as compact refs sorted by market cap descending, plus a market_position breakdown and a country breakdown computed over the FULL matching set (not just the returned page). Use list_subsegments first if you don't know valid segment/subsegment ids.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"segment":{"type":"string","description":"Taxonomy segment id, e.g. 'equipment_front_end' (see get_segments)."},"subsegment":{"type":"string","description":"Taxonomy subsegment id within that segment, e.g. 'litho' (see list_subsegments)."},"limit":{"default":50,"description":"Max companies to return, 1-100. Default 50.","type":"integer","minimum":1,"maximum":100},"offset":{"default":0,"description":"Companies to skip, for paging past the first `limit`. Default 0.","type":"integer","minimum":0,"maximum":9007199254740991}},"required":["segment","subsegment"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_supply_chain","description":"Walk the supplier/customer graph from one focal company, up to 2 tiers up (suppliers), down (customers), or both. Mirrors the chain view on wafergraph.com's Explorer. Returns companies grouped by tier plus the edges between them.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Focal company id or name."},"direction":{"default":"both","description":"up = walk suppliers only, down = walk customers only, both = walk both directions.","type":"string","enum":["up","down","both"]},"depth":{"default":2,"description":"Number of tiers to walk, capped at 2.","type":"integer","minimum":0,"maximum":2}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_upstream_concentration","description":"For one focal company: break its suppliers down by headquarters country and by segment, report an HHI concentration index (0 = spread evenly, 1 = fully concentrated in one bucket) for each dimension, and name the single most concentrated one. Always reports supplier_edge_coverage because key_suppliers is only ~58% filled dataset-wide — a company with few listed suppliers here may be under-documented, not genuinely un-dependent. country is the company's HEADQUARTERS country only, not a manufacturing-footprint field. A company headquartered here may fabricate, assemble, or test elsewhere — do not read this data as production geography.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Focal company id (snake_case, e.g. 'tsmc') or exact company name."}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_countries","description":"Every country in wafergraph's semiconductor & AI supply-chain dataset (29 countries across 615 companies) with company count, which segments are present there (with counts), public/private split, and priced market-cap totals. Sorted by company count descending. Optional segment filter. country is the company's HEADQUARTERS country only, not a manufacturing-footprint field. A company headquartered here may fabricate, assemble, or test elsewhere — do not read this data as production geography.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"segment":{"description":"Restrict to companies with this taxonomy segment id, e.g. 'foundry', 'memory' (see get_segments). Case-insensitive. Omit for all segments.","type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_subsegments","description":"Every subsegment across wafergraph's 12-segment taxonomy, each with its live company count and parent segment id/name, optionally filtered to one segment. Use this (or get_segments) to discover valid `subsegment` values before calling get_subsegment or filter_companies. Segment/subsegment names come from a versioned taxonomy snapshot; company counts are computed live and can include subsegment ids present in the company data but not yet in that snapshot (flagged `in_taxonomy: false`).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"segment":{"description":"Restrict to subsegments of this taxonomy segment id, e.g. 'materials'. Omit for all 12 segments.","type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"rank_by_connectivity","description":"Rank companies by documented supply-chain degree: customer count (downstream reach), supplier count (upstream dependence), or total. CRITICAL: degree measures how well a relationship is DOCUMENTED in this curated dataset, not how critical the company actually is — a well-covered firm can outrank a more essential but obscure one. See the caveat field in every response.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"metric":{"default":"total","description":"'customers' = downstream reach, 'suppliers' = upstream dependence, 'total' = sum of both.","type":"string","enum":["customers","suppliers","total"]},"segment":{"description":"Restrict to companies in this taxonomy segment id (see get_segments).","type":"string"},"country":{"description":"Restrict to companies headquartered in this country (case-insensitive exact match).","type":"string"},"limit":{"default":15,"description":"Max number of companies to return (1-50, default 15).","type":"integer","minimum":1,"maximum":50}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"rank_by_market_cap","description":"Top N companies by market cap, optionally restricted to a segment/country/market_position, with the priced-coverage ratio for that scope attached — about 28% of companies dataset-wide have no market_cap_usd_b on file, so a plain top-N list without the coverage number would look more complete than it is.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"default":10,"description":"How many companies to return, ranked highest market cap first, 1-100. Default 10.","type":"integer","minimum":1,"maximum":100},"segment":{"description":"Restrict to one taxonomy segment id (see get_segments).","type":"string"},"country":{"description":"Restrict to companies headquartered in this country, case-insensitive.","type":"string"},"market_position":{"description":"Restrict to companies at this market_position.","type":"string","enum":["monopoly","leader","major","challenger","niche"]}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"resolve_ticker","description":"Batch-resolve up to 25 strings — tickers, company names, or ids, in any mix — to canonical company refs. Call this FIRST whenever you have raw user input (a ticker list, pasted names) and need valid ids before calling other tools; unresolved entries come back with up to 3 suggested close matches instead of just null.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"queries":{"minItems":1,"maxItems":25,"type":"array","items":{"type":"string"},"description":"Up to 25 strings to resolve, e.g. ['NVDA', 'TSMC', 'asml']. Each may be a ticker, an exact/partial company name, or a company id."}},"required":["queries"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"search_companies","description":"Search wafergraph's semiconductor & AI supply-chain company dataset (615 companies across 12 segments) by name/one_liner substring and/or segment and/or country. Returns a compact list capped at 25 with a total match count. Use get_segments first if you don't know valid segment ids.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Case-insensitive substring match against company name and one_liner.","type":"string"},"segment":{"description":"Filter to companies with this taxonomy segment id, e.g. 'foundry', 'equipment_front_end' (see get_segments).","type":"string"},"country":{"description":"Filter to companies headquartered in this country, e.g. 'Taiwan' (case-insensitive).","type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"simulate_disruption","description":"Remove one company, every company in one country, or every company in one segment from the documented supply graph and report the blast radius: which companies lose a documented supplier, how many alternative suppliers they retain in the same subsegment, and which are left with zero documented alternative (ranked first). This is a documented-edge simulation, not a forecast — see the caveat field.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"company_id":{"description":"Remove a single company by id, name, or ticker. Exactly one of company_id/country/segment is required.","type":"string"},"country":{"description":"Remove every company headquartered in this country (case-insensitive exact match, e.g. 'Taiwan').","type":"string"},"segment":{"description":"Remove every company in this taxonomy segment id (see get_segments).","type":"string"},"limit":{"default":20,"description":"Max number of affected companies to return, zero-alternative ones first (1-100, default 20).","type":"integer","minimum":1,"maximum":100}},"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":73,"grade":"B","scanned_at":"2026-09-24T17:26:14.552Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T17:26:14.488Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":17,"max":20,"notes":["remote reachable in 2543ms"]},"poisoning":{"score":15,"max":15,"notes":["30 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 1 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 24 days ago"]},"identity":{"score":5,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://wafergraph-mcp.jwpalm99.workers.dev/mcp","reachable":true,"authRequired":false,"latencyMs":2543,"serverInfo":{"name":"wafergraph-mcp","version":"1.2.0"}}],"packages":[],"repo":{"found":true,"owner":"jasonpalmer1","repo":"wafergraph-mcp","archived":false,"pushedAt":"2026-08-31T22:28:03Z","stars":0,"forks":0,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/49824130?v=4","ownerCreatedAt":"2019-04-21T00:39:04Z","license":"NOASSERTION"},"icon":{"url":"https://wafergraph.com/apple-touch-icon.png","source":"site","width":180,"height":180},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"NOASSERTION","lastPushAt":"2026-08-31T22:28:03.000Z","score":20}}}},"grade_history":[],"reviews":[]}