2extract

Web data access for AI agents: location targeting, usage limits, traffic and spend reports.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
95%
Naming quality
98%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,471Tokens (tool definitions)
~1.5 KBTypical response size
Significant attention impact (2.71% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "mcp": {
      "url": "https://mcp.2extract.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.2extract.com/mcpstreamable-http

What it can do

Tool inventory

Tools (20)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢buildConnectionString(id, country_code, state, city, zip, ...)

Build a ready-to-use username and connection string for a proxy resource. The tool retrieves the proxy credential and account prefix automatically, validates geo, network, and session parameters, and encodes them in the correct order. Response fields: docs://proxies/buildConnectionString.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Proxy resource ID from listProxyResources."
    },
    "country_code": {
      "type": "string",
      "description": "Optional two-letter ISO country code, e.g. US."
    },
    "state": {
      "type": "string",
      "description": "Region extract_parameter. Requires country_code."
    },
    "city": {
      "type": "string",
      "description": "City extract_parameter. Requires country_code and state."
    },
    "zip": {
      "type": "string",
      "description": "ZIP value. Requires country_code; excludes state/city."
    },
    "asn": {
      "type": "integer",
      "description": "Residential ASN. Excludes location and isp.",
      "minimum": 0
    },
    "isp": {
      "type": "integer",
      "description": "Mobile ISP code. Excludes location and asn.",
      "minimum": 0
    },
    "session": {
      "type": "string",
      "description": "Optional alphanumeric sticky-session ID."
    },
    "session_ttl_minutes": {
      "type": "integer",
      "description": "TTL in minutes. Requires session."
    },
    "strict": {
      "type": "boolean",
      "description": "Strict sticky session. Requires session."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟡createProxyResource(name, proxy_type, tariff_id, countries, description, ...)

Create a new proxy resource. Response fields: docs://proxies/createProxyResource.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Proxy name: lowercase letters, digits, underscores only, max 50 characters. Immutable after creation."
    },
    "proxy_type": {
      "type": "string",
      "description": "Proxy type, one of: residential, mobile"
    },
    "tariff_id": {
      "type": "integer",
      "description": "Tariff plan ID from listProxyPlans",
      "minimum": 0
    },
    "countries": {
      "type": [
        "null",
        "array"
      ],
      "items": {
        "type": "integer",
        "minimum": 0
      },
      "description": "Country IDs; empty allows any country."
    },
    "description": {
      "type": "string",
      "description": "Free-text note, shown alongside this proxy in listProxyResources. Write enough detail to identify this proxy's purpose at a glance later — e.g. the project or task it's for, why it was created, its default country, or other distinguishing settings."
    },
    "ip_whitelist": {
      "type": [
        "null",
        "array"
      ],
      "items": {
        "type": "string"
      },
      "description": "IP addresses allowed to authenticate with this proxy, e.g. ['203.0.113.1']. Empty or omitted means no IP restriction."
    },
    "limits": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "limit_type": {
          "type": "string",
          "description": "'money' = USD spend cap, 'traffic' = bytes cap"
        },
        "time_period": {
          "type": "string",
          "description": "Reset period for the limit counter, one of: daily, monthly"
        },
        "total_limit": {
          "type": "number",
          "description": "Limit value: USD amount for 'money', bytes for 'traffic'"
        }
      },
      "description": "Optional spend or traffic limit. Can also be set later via setProxyLimits.",
      "required": [
        "limit_type",
        "time_period",
        "total_limit"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "name",
    "proxy_type",
    "tariff_id"
  ],
  "additionalProperties": false
}
🔴deactivateProxyResource(id)

Deactivate a proxy resource, stopping its traffic without deleting it. Use deleteProxyResource to permanently remove instead. Response fields: docs://proxies/updateProxyResource.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Proxy resource ID. Get from listProxyResources."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🔴deleteProxyResource(id, confirm)

Permanently delete a proxy resource. This action is irreversible — the proxy and all its settings will be removed. User confirmation is required before proceeding. Response fields: docs://proxies/deleteProxyResource.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Proxy resource ID. Get from listProxyResources."
    },
    "confirm": {
      "type": "boolean",
      "description": "Set to true only after the user has explicitly confirmed the deletion. Skips the confirmation step."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢getAccountBalance

Get the current account balance, overdraft limit, and proxy username prefix. Response fields: docs://account/getAccountBalance.

Input Schema

{
  "type": "object",
  "additionalProperties": false
}
🟢getAccountTrafficUsage(date_from, date_to, user_proxy_list_id, page, limit)

Get traffic usage statistics for the account over a date range. Response fields: docs://account/getAccountTrafficUsage.

Input Schema

{
  "type": "object",
  "properties": {
    "date_from": {
      "type": "string",
      "description": "Start date in YYYY-MM-DD format, e.g. 2024-01-01"
    },
    "date_to": {
      "type": "string",
      "description": "End date in YYYY-MM-DD format, e.g. 2024-01-31"
    },
    "user_proxy_list_id": {
      "type": "string",
      "description": "Filter to a single proxy resource ID, from listProxyResources. Omit to get all proxies."
    },
    "page": {
      "type": "integer",
      "description": "Page number starting from 0, default 0"
    },
    "limit": {
      "type": "integer",
      "description": "Items per page, default 100, max 200"
    }
  },
  "required": [
    "date_from",
    "date_to"
  ],
  "additionalProperties": false
}
🟢getProxyResource(id)

Get full details of a specific proxy resource, including IP/host whitelists not present in listProxyResources. Response fields: docs://proxies/getProxyResource.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Proxy resource ID, e.g. '86Rf07'. Get from listProxyResources."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢listAccountBalanceHistory(date_from, date_to, limit, page, order)

Get balance transaction history for the account over a date range. Response fields: docs://account/listAccountBalanceHistory.

Input Schema

{
  "type": "object",
  "properties": {
    "date_from": {
      "type": "string",
      "description": "Start date in YYYY-MM-DD format, e.g. 2024-01-01"
    },
    "date_to": {
      "type": "string",
      "description": "End date in YYYY-MM-DD format, e.g. 2024-01-31"
    },
    "limit": {
      "type": "integer",
      "description": "Items per page, default 100, max 200"
    },
    "page": {
      "type": "integer",
      "description": "Page number starting from 0, default 0"
    },
    "order": {
      "type": "string",
      "description": "Sort direction: asc or desc, default desc"
    }
  },
  "required": [
    "date_from",
    "date_to"
  ],
  "additionalProperties": false
}
🟢listGeoCountries(search)

List all available countries for proxy geo targeting, optionally filtered by name. Response fields: docs://geo/listGeoCountries.

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "type": "string",
      "description": "Optional country name filter, minimum 2 characters, e.g. 'United'"
    }
  },
  "additionalProperties": false
}
🟢listProxyPlans(proxy_type, enabled, popular)

List tariff plans for a proxy type. Use the numeric id when calling createProxyResource. Response fields: docs://plans/listProxyPlans.

Input Schema

{
  "type": "object",
  "properties": {
    "proxy_type": {
      "type": "string",
      "description": "Proxy type to list plans for, one of: residential, mobile"
    },
    "enabled": {
      "type": [
        "null",
        "boolean"
      ],
      "description": "Filter by enabled status. Default: true (only purchasable plans). Pass false to see all plans including disabled."
    },
    "popular": {
      "type": [
        "null",
        "boolean"
      ],
      "description": "Filter by popular flag. Omit to return all plans regardless of popularity."
    }
  },
  "required": [
    "proxy_type"
  ],
  "additionalProperties": false
}
🟢listProxyResources(search, status, limit, page, order, ...)

List all proxy resources in the account, with tariff, limits, traffic, and spend detail. Response fields: docs://proxies/listProxyResources.

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "type": "string",
      "description": "Filter by proxy name (partial match, case-insensitive)"
    },
    "status": {
      "type": "string",
      "description": "Filter by status: 'active', 'inactive', or comma-separated list e.g. 'active,inactive'"
    },
    "limit": {
      "type": "integer",
      "description": "Items per page, default 100, max 200"
    },
    "page": {
      "type": "integer",
      "description": "Page number starting from 0, default 0"
    },
    "order": {
      "type": "string",
      "description": "Sort direction: asc or desc, default desc"
    },
    "order_by": {
      "type": "string",
      "description": "Sort field: name, status, tariff.name, traffic_used.total_used, total_spent, created_at"
    },
    "statistic_from": {
      "type": "string",
      "description": "Start date for per-proxy traffic statistics in YYYY-MM-DD format"
    },
    "statistic_to": {
      "type": "string",
      "description": "End date for per-proxy traffic statistics in YYYY-MM-DD format"
    }
  },
  "additionalProperties": false
}
🔴regenerateProxyPassword(id, confirm)

Generate a new password for a proxy resource. The old password is immediately invalidated — any running traffic using it will be interrupted. User confirmation is required before proceeding. Response fields: docs://proxies/regenerateProxyPassword.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Proxy resource ID. Get from listProxyResources."
    },
    "confirm": {
      "type": "boolean",
      "description": "Set to true only after the user has explicitly confirmed the regeneration. Skips the confirmation step."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢searchGeoCities(country_code, region_code, search)

Search cities within a country and optional region (region_code from searchGeoRegions). Use search to narrow results — city lists can be large. Response fields: docs://geo/searchGeoCities.

Input Schema

{
  "type": "object",
  "properties": {
    "country_code": {
      "type": "string",
      "description": "ISO country code, e.g. 'US', 'DE'"
    },
    "region_code": {
      "type": "integer",
      "description": "Numeric region code to filter cities, from searchGeoRegions' 'code' field, e.g. 77 for California"
    },
    "search": {
      "type": "string",
      "description": "City name search, minimum 2 characters, e.g. 'Los'"
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false
}
🟢searchGeoISP(search, limit)

Search the ISP catalog for mobile ISP targeting (mobile proxies only). Always resolve the code through this tool — never accept a real-world ASN number as a substitute. Response fields: docs://geo/searchGeoISP.

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "type": "string",
      "description": "ISP name substring search, minimum 3 characters, e.g. 'AT&T'"
    },
    "limit": {
      "type": "integer",
      "description": "Max results, default 100, max 500"
    }
  },
  "additionalProperties": false
}
🟢searchGeoRegions(country_code, search)

Search regions/states within a country. Response fields: docs://geo/searchGeoRegions.

Input Schema

{
  "type": "object",
  "properties": {
    "country_code": {
      "type": "string",
      "description": "ISO country code, e.g. 'US', 'DE', 'GB'"
    },
    "search": {
      "type": "string",
      "description": "Optional region name filter, minimum 3 characters, e.g. 'California'"
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false
}
🟢searchGeoZips(country_code, search, limit)

Search ZIP codes within a country, for use in proxy username params. Response fields: docs://geo/searchGeoZips.

Input Schema

{
  "type": "object",
  "properties": {
    "country_code": {
      "type": "string",
      "description": "ISO country code, e.g. 'US', 'DE'"
    },
    "search": {
      "type": "string",
      "description": "ZIP substring search, minimum 3 characters, e.g. '123'"
    },
    "limit": {
      "type": "integer",
      "description": "Max results, default 100, max 500"
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false
}
⚪setProxyIpWhitelist(id, ips)

Replace the IP whitelist for a proxy resource, restricting authentication to the given IPs. Response fields: docs://proxy-settings/setProxyIpWhitelist.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Proxy resource ID. Get from listProxyResources."
    },
    "ips": {
      "type": [
        "null",
        "array"
      ],
      "items": {
        "type": "string"
      },
      "description": "List of allowed IP addresses, e.g. ['203.0.113.1', '198.51.100.42']. Empty array removes all IP restrictions."
    }
  },
  "required": [
    "id",
    "ips"
  ],
  "additionalProperties": false
}
🟡setProxyLimits(id, limit_type, time_period, total_limit)

Set a traffic or spending limit on a proxy resource to control costs. Response fields: docs://proxy-settings/setProxyLimits.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Proxy resource ID. Get from listProxyResources."
    },
    "limit_type": {
      "type": "string",
      "description": "'money' = USD spend cap, 'traffic' = bytes cap"
    },
    "time_period": {
      "type": "string",
      "description": "Reset period for the limit counter, one of: daily, monthly"
    },
    "total_limit": {
      "type": "number",
      "description": "Limit value: USD amount for 'money' (e.g. 50.00), bytes for 'traffic' (e.g. 1073741824 = 1GB). Set to 0 to remove the limit."
    }
  },
  "required": [
    "id",
    "limit_type",
    "time_period",
    "total_limit"
  ],
  "additionalProperties": false
}
⚪setProxyTargetHosts(id, target_hosts)

Replace the target host whitelist for a proxy resource, restricting its traffic to the given domains. Response fields: docs://proxy-settings/setProxyTargetHosts.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Proxy resource ID. Get from listProxyResources."
    },
    "target_hosts": {
      "type": [
        "null",
        "array"
      ],
      "items": {
        "type": "string"
      },
      "description": "List of allowed domains, e.g. ['example.com', '*.api.service.com']. Empty array removes all restrictions."
    }
  },
  "required": [
    "id",
    "target_hosts"
  ],
  "additionalProperties": false
}
🟡updateProxyResource(id, description, countries, status, ip_whitelist, ...)

Update description, countries, status, IP whitelist, or limits in one call. Name and proxy_type are not mutable through this MCP tool. For single-field changes, prefer setProxyIpWhitelist, setProxyLimits, or deactivateProxyResource. Response fields: docs://proxies/updateProxyResource.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Proxy resource ID. Get from listProxyResources."
    },
    "description": {
      "type": "string",
      "description": "New description. See createProxyResource's description field for what to include."
    },
    "countries": {
      "type": [
        "null",
        "array"
      ],
      "items": {
        "type": "integer",
        "minimum": 0
      },
      "description": "Replacement country IDs; empty clears."
    },
    "status": {
      "type": "string",
      "description": "New status, one of: active, inactive"
    },
    "ip_whitelist": {
      "type": [
        "null",
        "array"
      ],
      "items": {
        "type": "string"
      },
      "description": "New IP whitelist. Replaces the existing list entirely. Empty array removes all restrictions."
    },
    "limits": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "limit_type": {
          "type": "string",
          "description": "'money' = USD spend cap, 'traffic' = bytes cap"
        },
        "time_period": {
          "type": "string",
          "description": "Reset period for the limit counter, one of: daily, monthly"
        },
        "total_limit": {
          "type": "number",
          "description": "Limit value: USD amount for 'money', bytes for 'traffic'"
        }
      },
      "description": "New spend or traffic limit. Replaces the existing limit.",
      "required": [
        "limit_type",
        "time_period",
        "total_limit"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded20 tools