File size: 1,981 Bytes
0d4024a
 
252b40c
 
35aff7c
 
 
 
 
 
e30962b
826aac3
0d4024a
 
 
5061d39
f1d068a
23b379c
0d4024a
f1d068a
 
 
252b40c
0d4024a
 
 
 
 
 
 
 
 
 
 
 
 
 
f1d068a
 
 
0d4024a
35aff7c
 
 
 
0d4024a
 
 
 
4d96490
0d4024a
 
 
 
 
 
 
 
 
252b40c
 
 
e30962b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from typing import NamedTuple

import gradio as gr

from tdagent.tools.get_domain_information import (
    dns_enumeration_tool,
    extractor_of_ioc_from_threatfox_tool,
    geo_location_tool,
    scrap_subdomains_tool,
)
from tdagent.tools.get_url_content import gr_get_url_http_content
from tdagent.tools.internal_company_user_search import gr_internal_company
from tdagent.tools.lookup_company_cloud_account_information import (
    gr_lookup_company_cloud_account_information,
)
from tdagent.tools.query_abuse_ip_db import gr_query_abuseipdb
from tdagent.tools.rdap import gr_query_rdap
from tdagent.tools.send_email import gr_send_email
from tdagent.tools.virus_total import gr_virus_total_url_info


# from tdagent.tools.whois import gr_query_whois


## Tools to load into the application interface ##


class ToolInfo(NamedTuple):
    """Gradio MCP tool info."""

    name: str
    interface: gr.Interface


TOOLS = (
    ToolInfo("Get URL Content", gr_get_url_http_content),
    ToolInfo("Query AbuseIPDB", gr_query_abuseipdb),
    # Whois does not work from Spaces (port 43 blocked)
    # ToolInfo("Query WHOIS", gr_query_whois),
    ToolInfo("Query RDAP", gr_query_rdap),
    ToolInfo("Virus Total URL info", gr_virus_total_url_info),
    ToolInfo("Get IP's Location", geo_location_tool),
    ToolInfo("DNS Enumerator", dns_enumeration_tool),
    ToolInfo("Subdomain Retriever", scrap_subdomains_tool),
    ToolInfo("Extractor of IoCs", extractor_of_ioc_from_threatfox_tool),
    ## Fake tools
    ToolInfo("Fake company directory", gr_internal_company),
    ToolInfo(
        "Fake company cloud accounts",
        gr_lookup_company_cloud_account_information,
    ),
    ToolInfo("Send email", gr_send_email),
)

## Application Interface ##
gr_app = gr.TabbedInterface(
    interface_list=[t_info.interface for t_info in TOOLS],
    tab_names=[t_info.name for t_info in TOOLS],
    title="TDAgentTools",
)

if __name__ == "__main__":
    gr_app.launch(mcp_server=True)