Medium Risk

screen_companies

Screen 5,500+ US companies by financial metrics. Find stocks matching quantitative criteria. Metric IDs (canonical names from filing_metrics): - Valuation: pe_ratio, pb_ratio, ev_ebitda, fcf_yield, market_cap, ev - Profitability: gross_margin, oper_margin, net_margin, ebitda_margin, roe, roa, roi...

Risk signalsHigh parameter count (13 properties)

Part of the MetricDuck — Financial Analysis server.

screen_companies can modify MetricDuck — Financial Analysis data, with no limits today. PolicyLayer puts allow, deny, and rate-limit rules on every call. Live in minutes.

SECURE METRICDUCK — FINANCIAL ANALYSIS →

Free to start. No card required.

AI agents use screen_companies to create or modify resources in MetricDuck — Financial Analysis. Write operations carry medium risk because an autonomous agent could trigger bulk unintended modifications. Rate limits prevent a single agent session from making hundreds of changes in rapid succession. Argument validation ensures the agent passes expected values.

Without a policy, an AI agent could call screen_companies repeatedly, creating or modifying resources faster than any human could review. PolicyLayer's rate limiting ensures write operations happen at a controlled pace, and argument validation catches malformed or unexpected inputs before they reach MetricDuck — Financial Analysis.

Write tools can modify data. A rate limit prevents runaway bulk operations from AI agents.

policy.json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "screen_companies": {
      "limits": [
        {
          "counter": "screen_companies_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}

See the full MetricDuck — Financial Analysis policy for all 22 tools.

Get this rule live on your own MetricDuck — Financial Analysis server in minutes. PolicyLayer enforces it on every call, before it runs.

ENFORCE ON MY METRICDUCK — FINANCIAL ANALYSIS →

View all 22 tools →

These attack patterns abuse exactly the kind of access screen_companies gives an agent. Each links to the full case and the policy that stops it:

Browse the full MCP Attack Database →

Every attack above starts with a tool call. PolicyLayer checks each one against your policy first, so screen_companies only ever does what you allow.

SECURE METRICDUCK — FINANCIAL ANALYSIS →

Other write tools across the catalogue. The same approach applies to each: rate-limit and validate the arguments.

What does the screen_companies tool do? +

Screen 5,500+ US companies by financial metrics. Find stocks matching quantitative criteria. Metric IDs (canonical names from filing_metrics): - Valuation: pe_ratio, pb_ratio, ev_ebitda, fcf_yield, market_cap, ev - Profitability: gross_margin, oper_margin, net_margin, ebitda_margin, roe, roa, roic, roce - Cash Flow: fcf, net_cf_ops, cash_conversion - Balance Sheet: debt_to_equity, current_ratio, ttl_debt, ttl_equity, cash_st_invs - Size: revenues, net_income, ebitda, gross_profit Growth screening: use period_type on any base metric: - Revenue growth YoY: metric_id="revenues", period_type="ttm.yoy" - 3-year revenue CAGR: metric_id="revenues", period_type="ttm.cagr3" - Earnings growth: metric_id="net_income", period_type="ttm.yoy" Period types: ttm (default), q, fy, ss (balance sheet snapshot), ttm.yoy, ttm.cagr3, ttm.cagr5 Sectors: TECH, FIN, HEALTH, CONS_STAPLES, CONS_DISC, IND, ENERGY, UTIL, RE, MAT, COMM Operators: gt (>), gte (>=), lt (<), lte (<=), eq (=), between Tag filtering (required_tags / excluded_tags): filter by business model classification. Requires companies to be classified — unclassified companies are excluded from tag-filtered results. Note: For P/E screening, negative P/E means losses. Add a gt(0) filter to exclude loss-making companies. Note: ROIC values are decimals (0.15 = 15%). Margins and returns are also decimals. Use Cases: - "High ROIC tech stocks" -> filters=[{metric_id:"roic", operator:"gt", value:0.15}], sectors=["TECH"] - "Undervalued profitable industrials" -> filters=[{metric_id:"pe_ratio", operator:"lt", value:15}, {metric_id:"pe_ratio", operator:"gt", value:0}], sectors=["IND"] - "Revenue growing >10% YoY" -> filters=[{metric_id:"revenues", operator:"gt", value:0.10, period_type:"ttm.yoy"}] - "AI infrastructure companies not exposed to China supply chain" -> required_tags=["ai_ml_infrastructure"], excluded_tags=["china_supply_chain_heavy"] - "Profitable subscription businesses" -> filters=[{metric_id:"net_margin", operator:"gt", value:0.10}], required_tags=["subscription_recurring"] - "Quality companies with a material charge" -> filters=[{metric_id:"roic", operator:"gt", value:0.15}, {metric_id:"market_cap", operator:"gt", value:10000000000}], signals=["has_material_charge"] When signals are provided, results include matched_signals and signal_details fields. Signals filter AFTER metric screening — only companies passing metric filters are checked for signals. Responses capped at ~20K chars. If truncated, reduce limit or add stricter filters.. It is categorised as a Write tool in the MetricDuck — Financial Analysis MCP Server, which means it can create or modify data. Consider rate limits to prevent runaway writes.

How do I enforce a policy on screen_companies? +

Register the MetricDuck — Financial Analysis MCP server in PolicyLayer and add a rule for screen_companies: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches MetricDuck — Financial Analysis. Nothing to install.

What risk level is screen_companies? +

screen_companies is a Write tool with medium risk. Write tools should be rate-limited to prevent accidental bulk modifications.

Can I rate-limit screen_companies? +

Yes. Add a rate_limit block to the screen_companies rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.

How do I block screen_companies completely? +

Set action: deny in the PolicyLayer policy for screen_companies. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.

What MCP server provides screen_companies? +

screen_companies is provided by the MetricDuck — Financial Analysis MCP server (https://mcp.metricduck.com/mcp). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.

Enforce policy on every MetricDuck — Financial Analysis tool call.

Deterministic rules across all 22 MetricDuck — Financial Analysis tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.

Free to start. No card required.

4,600+ MCP servers and 31,000+ tools scanned and risk-classified.

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.