2extract
Web data access for AI agents: location targeting, usage limits, traffic and spend reports.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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-httpWhat it can do
Tool inventory
Tools (20)
🟢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
Evidence