diff --git a/src/web_server/main.py b/src/web_server/main.py
index aaf2c66..9b216d2 100644
--- a/src/web_server/main.py
+++ b/src/web_server/main.py
@@ -1,7 +1,9 @@
-from tosca.parser import TOSCA_Parser
 from grpc_client.main import GRPC_Client
 from klein import Klein
-import functools
+import os
+from tosca.parser import TOSCA_Parser
+from tosca.default import TOSCA_DEFS_DIR
+import json
 
 BANNER = """
    _  ______  _____    __________  _____ _________ 
@@ -13,6 +15,9 @@
 
 class TOSCA_WebServer:
 
+    current_dir = os.path.dirname(os.path.realpath(__file__))
+    template_dir = os.path.join(current_dir, 'templates/')
+
     app = Klein()
 
     def execute_tosca(self, recipe):
@@ -25,7 +30,14 @@
 
     @app.route('/', methods=['GET'])
     def index(self, request):
-        return BANNER
+        request.responseHeaders.addRawHeader(b"content-type", b"application/json")
+        tosca_defs = [f for f in os.listdir(TOSCA_DEFS_DIR) if not f.startswith('.')]
+
+        response = {}
+        for d in tosca_defs:
+            name = d.replace('.yaml', '')
+            response[name] = "/custom_type/%s" % name
+        return json.dumps(response)
 
     @app.route('/run', methods=['POST'])
     def execute(self, request):
@@ -39,5 +51,11 @@
         d.addCallback(self.execute_tosca)
         return d
 
+    @app.route("/custom_type/<name>")
+    def custom_type(self, request, name):
+        request.responseHeaders.addRawHeader(b"content-type", b"text/plain")
+        custom_type = open(TOSCA_DEFS_DIR + '/' + name + '.yaml').read()
+        return custom_type
+
     def __init__(self):
         self.app.run('localhost', '9200')
\ No newline at end of file
