list_my_ports
List ports across your assets with host, IP and detected service. Filter by state (e.g. "open"), port number, protocol, or host (hostname/FQDN/IP substring). Costs 1 credit.
tools/callCost: 1 credit per successful call · Scope: mcp:org · Response shape: jsonb
Returns data scoped to your own organisation only — the organisation is resolved from your API key and injected server-side, never read from the request.
Parameters
statestringoptionalFilter by port state, e.g. open, closed, filtered. Optional.
portintegeroptionalFilter by port number. Accepted range: 1–65535. Optional.
protocolstringoptionalFilter by transport protocol, e.g. tcp, udp. Optional.
hoststringoptionalFilter by host as a hostname, FQDN, or IP substring. Maximum 255 characters. Optional.
limitintegeroptionaldefault: 100Maximum number of ports to return. Accepted range: 1–500.
Example invocation
Ask your agent: "List all our open ports."
curl -s https://api.precursorintelligence.com/functions/v1/mcp \
-H "Authorization: Bearer $PRECURSOR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_my_ports","arguments":{"state":"open","limit":100}}}'Response
{
"count": 3,
"items": [
{
"hostname": "autodiscover",
"fqdn": "autodiscover.precursorsecurity.com",
"ip": "40.99.153.136",
"port_number": 443,
"protocol": "tcp",
"state": "open",
"service_name": "https",
"service_product": "Microsoft IIS httpd",
"service_version": "10.0"
},
{
"hostname": "autodiscover",
"fqdn": "autodiscover.precursorsecurity.com",
"ip": "40.99.153.136",
"port_number": 80,
"protocol": "tcp",
"state": "open",
"service_name": "http",
"service_product": "Microsoft IIS httpd",
"service_version": "10.0"
},
{
"hostname": "mail",
"fqdn": "mail.precursorsecurity.com",
"ip": "203.0.113.10",
"port_number": 22,
"protocol": "tcp",
"state": "open",
"service_name": "ssh",
"service_product": "OpenSSH",
"service_version": "8.9p1"
}
],
"generated_at": "2026-06-18T08:15:00.000Z"
}The full MCP envelope, including _meta.precursor with request_id, credits, and response_truncated, is documented in Response Format.
Response fields
countintegeroptionalNumber of ports returned (equals items.length).
itemsarrayoptionalPorts matching the filters within your organisation. Each object contains the fields below.
items[].hostnamestringoptionalShort hostname of the asset.
items[].fqdnstringoptionalFully qualified domain name of the asset.
items[].ipstringoptionalIP address the port was observed on, e.g. 40.99.153.136.
items[].port_numberintegeroptionalPort number, e.g. 443.
items[].protocolstringoptionalTransport protocol, e.g. tcp, udp.
items[].statestringoptionalPort state from the most recent scan, e.g. open.
items[].service_namestring | nulloptionalDetected service name, e.g. https, ssh.
items[].service_productstring | nulloptionalDetected service product, e.g. Microsoft IIS httpd, OpenSSH.
items[].service_versionstring | nulloptionalDetected service version, e.g. 10.0.
generated_atstringoptionalISO 8601 timestamp indicating when this response was generated.
Errors
| Code | Message | When |
|---|---|---|
-32602 | invalid_params: port: min:1 | port is less than 1 |
-32602 | invalid_params: port: max:65535 | port exceeds 65535 |
-32602 | invalid_params: host: max:255 | host exceeds 255 characters |
-32602 | invalid_params: limit: min:1 | limit is less than 1 |
-32602 | invalid_params: limit: max:500 | limit exceeds 500 |
-32001 | unauthorized | The API key is invalid/revoked, the IP is not allowed, or the key lacks the mcp:org scope. |
-32002 | insufficient_credits | Your credit balance is zero; top up from the dashboard |
-32603 | internal | Unexpected server error; the credit is automatically refunded |