diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..541fd55
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+.licenses/** -diff linguist-generated=true
\ No newline at end of file
diff --git a/.github/workflows/licensed.yml b/.github/workflows/licensed.yml
new file mode 100644
index 0000000..ae62613
--- /dev/null
+++ b/.github/workflows/licensed.yml
@@ -0,0 +1,20 @@
+name: Licensed
+
+on:
+  push: {branches: main}
+  pull_request: {branches: main}
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+    name: Check licenses
+    steps:
+      - uses: actions/checkout@v2
+      - run: npm ci
+      - name: Install licensed
+        run: |
+          cd $RUNNER_TEMP
+          curl -Lfs -o licensed.tar.gz https://github.com/github/licensed/releases/download/2.12.2/licensed-2.12.2-linux-x64.tar.gz
+          sudo tar -xzf licensed.tar.gz
+          sudo mv licensed /usr/local/bin/licensed
+      - run: licensed status
\ No newline at end of file
diff --git a/.licensed.yml b/.licensed.yml
new file mode 100644
index 0000000..180cc58
--- /dev/null
+++ b/.licensed.yml
@@ -0,0 +1,16 @@
+sources:
+  npm: true
+
+allowed:
+  - apache-2.0
+  - bsd-2-clause
+  - bsd-3-clause
+  - isc
+  - mit
+  - cc0-1.0
+  - unlicense
+  - 0bsd
+
+reviewed:
+  npm:
+  - sax
\ No newline at end of file
diff --git a/.licenses/npm/@actions/cache.dep.yml b/.licenses/npm/@actions/cache.dep.yml
new file mode 100644
index 0000000..37b565e
Binary files /dev/null and b/.licenses/npm/@actions/cache.dep.yml differ
diff --git a/.licenses/npm/@actions/core.dep.yml b/.licenses/npm/@actions/core.dep.yml
new file mode 100644
index 0000000..6fe946d
Binary files /dev/null and b/.licenses/npm/@actions/core.dep.yml differ
diff --git a/.licenses/npm/@actions/exec.dep.yml b/.licenses/npm/@actions/exec.dep.yml
new file mode 100644
index 0000000..b1effd3
Binary files /dev/null and b/.licenses/npm/@actions/exec.dep.yml differ
diff --git a/.licenses/npm/@actions/glob.dep.yml b/.licenses/npm/@actions/glob.dep.yml
new file mode 100644
index 0000000..df7eaee
Binary files /dev/null and b/.licenses/npm/@actions/glob.dep.yml differ
diff --git a/.licenses/npm/@actions/http-client.dep.yml b/.licenses/npm/@actions/http-client.dep.yml
new file mode 100644
index 0000000..d18a24f
Binary files /dev/null and b/.licenses/npm/@actions/http-client.dep.yml differ
diff --git a/.licenses/npm/@actions/io.dep.yml b/.licenses/npm/@actions/io.dep.yml
new file mode 100644
index 0000000..a23d1af
Binary files /dev/null and b/.licenses/npm/@actions/io.dep.yml differ
diff --git a/.licenses/npm/@azure/abort-controller.dep.yml b/.licenses/npm/@azure/abort-controller.dep.yml
new file mode 100644
index 0000000..a77b873
Binary files /dev/null and b/.licenses/npm/@azure/abort-controller.dep.yml differ
diff --git a/.licenses/npm/@azure/core-asynciterator-polyfill.dep.yml b/.licenses/npm/@azure/core-asynciterator-polyfill.dep.yml
new file mode 100644
index 0000000..6e36cb3
Binary files /dev/null and b/.licenses/npm/@azure/core-asynciterator-polyfill.dep.yml differ
diff --git a/.licenses/npm/@azure/core-auth.dep.yml b/.licenses/npm/@azure/core-auth.dep.yml
new file mode 100644
index 0000000..cf8f4bd
Binary files /dev/null and b/.licenses/npm/@azure/core-auth.dep.yml differ
diff --git a/.licenses/npm/@azure/core-http.dep.yml b/.licenses/npm/@azure/core-http.dep.yml
new file mode 100644
index 0000000..a83956a
Binary files /dev/null and b/.licenses/npm/@azure/core-http.dep.yml differ
diff --git a/.licenses/npm/@azure/core-lro.dep.yml b/.licenses/npm/@azure/core-lro.dep.yml
new file mode 100644
index 0000000..56a8701
Binary files /dev/null and b/.licenses/npm/@azure/core-lro.dep.yml differ
diff --git a/.licenses/npm/@azure/core-paging.dep.yml b/.licenses/npm/@azure/core-paging.dep.yml
new file mode 100644
index 0000000..9ac34d2
Binary files /dev/null and b/.licenses/npm/@azure/core-paging.dep.yml differ
diff --git a/.licenses/npm/@azure/core-tracing.dep.yml b/.licenses/npm/@azure/core-tracing.dep.yml
new file mode 100644
index 0000000..eccbcc6
Binary files /dev/null and b/.licenses/npm/@azure/core-tracing.dep.yml differ
diff --git a/.licenses/npm/@azure/logger.dep.yml b/.licenses/npm/@azure/logger.dep.yml
new file mode 100644
index 0000000..1432c1f
Binary files /dev/null and b/.licenses/npm/@azure/logger.dep.yml differ
diff --git a/.licenses/npm/@azure/ms-rest-js.dep.yml b/.licenses/npm/@azure/ms-rest-js.dep.yml
new file mode 100644
index 0000000..4fbe7cd
Binary files /dev/null and b/.licenses/npm/@azure/ms-rest-js.dep.yml differ
diff --git a/.licenses/npm/@azure/storage-blob.dep.yml b/.licenses/npm/@azure/storage-blob.dep.yml
new file mode 100644
index 0000000..4f40fd4
Binary files /dev/null and b/.licenses/npm/@azure/storage-blob.dep.yml differ
diff --git a/.licenses/npm/@opencensus/web-types.dep.yml b/.licenses/npm/@opencensus/web-types.dep.yml
new file mode 100644
index 0000000..9c2ac25
Binary files /dev/null and b/.licenses/npm/@opencensus/web-types.dep.yml differ
diff --git a/.licenses/npm/@opentelemetry/api.dep.yml b/.licenses/npm/@opentelemetry/api.dep.yml
new file mode 100644
index 0000000..57831e3
Binary files /dev/null and b/.licenses/npm/@opentelemetry/api.dep.yml differ
diff --git a/.licenses/npm/@opentelemetry/context-base.dep.yml b/.licenses/npm/@opentelemetry/context-base.dep.yml
new file mode 100644
index 0000000..46bccdb
Binary files /dev/null and b/.licenses/npm/@opentelemetry/context-base.dep.yml differ
diff --git a/.licenses/npm/@types/node-fetch.dep.yml b/.licenses/npm/@types/node-fetch.dep.yml
new file mode 100644
index 0000000..ae6e370
Binary files /dev/null and b/.licenses/npm/@types/node-fetch.dep.yml differ
diff --git a/.licenses/npm/@types/node.dep.yml b/.licenses/npm/@types/node.dep.yml
new file mode 100644
index 0000000..90e5ac8
Binary files /dev/null and b/.licenses/npm/@types/node.dep.yml differ
diff --git a/.licenses/npm/@types/tunnel.dep.yml b/.licenses/npm/@types/tunnel.dep.yml
new file mode 100644
index 0000000..59643d4
Binary files /dev/null and b/.licenses/npm/@types/tunnel.dep.yml differ
diff --git a/.licenses/npm/abort-controller.dep.yml b/.licenses/npm/abort-controller.dep.yml
new file mode 100644
index 0000000..492a609
Binary files /dev/null and b/.licenses/npm/abort-controller.dep.yml differ
diff --git a/.licenses/npm/asynckit.dep.yml b/.licenses/npm/asynckit.dep.yml
new file mode 100644
index 0000000..905e0aa
Binary files /dev/null and b/.licenses/npm/asynckit.dep.yml differ
diff --git a/.licenses/npm/balanced-match.dep.yml b/.licenses/npm/balanced-match.dep.yml
new file mode 100644
index 0000000..1d768a8
Binary files /dev/null and b/.licenses/npm/balanced-match.dep.yml differ
diff --git a/.licenses/npm/brace-expansion.dep.yml b/.licenses/npm/brace-expansion.dep.yml
new file mode 100644
index 0000000..8fa6cfb
Binary files /dev/null and b/.licenses/npm/brace-expansion.dep.yml differ
diff --git a/.licenses/npm/combined-stream.dep.yml b/.licenses/npm/combined-stream.dep.yml
new file mode 100644
index 0000000..2b39215
Binary files /dev/null and b/.licenses/npm/combined-stream.dep.yml differ
diff --git a/.licenses/npm/concat-map.dep.yml b/.licenses/npm/concat-map.dep.yml
new file mode 100644
index 0000000..20216b9
Binary files /dev/null and b/.licenses/npm/concat-map.dep.yml differ
diff --git a/.licenses/npm/delayed-stream.dep.yml b/.licenses/npm/delayed-stream.dep.yml
new file mode 100644
index 0000000..1240121
Binary files /dev/null and b/.licenses/npm/delayed-stream.dep.yml differ
diff --git a/.licenses/npm/event-target-shim.dep.yml b/.licenses/npm/event-target-shim.dep.yml
new file mode 100644
index 0000000..7a3fc01
Binary files /dev/null and b/.licenses/npm/event-target-shim.dep.yml differ
diff --git a/.licenses/npm/events.dep.yml b/.licenses/npm/events.dep.yml
new file mode 100644
index 0000000..780d4ff
Binary files /dev/null and b/.licenses/npm/events.dep.yml differ
diff --git a/.licenses/npm/form-data-2.5.1.dep.yml b/.licenses/npm/form-data-2.5.1.dep.yml
new file mode 100644
index 0000000..000f222
Binary files /dev/null and b/.licenses/npm/form-data-2.5.1.dep.yml differ
diff --git a/.licenses/npm/form-data-3.0.0.dep.yml b/.licenses/npm/form-data-3.0.0.dep.yml
new file mode 100644
index 0000000..f0b0aa7
Binary files /dev/null and b/.licenses/npm/form-data-3.0.0.dep.yml differ
diff --git a/.licenses/npm/ip-regex.dep.yml b/.licenses/npm/ip-regex.dep.yml
new file mode 100644
index 0000000..95d4b6b
Binary files /dev/null and b/.licenses/npm/ip-regex.dep.yml differ
diff --git a/.licenses/npm/mime-db.dep.yml b/.licenses/npm/mime-db.dep.yml
new file mode 100644
index 0000000..beeb205
Binary files /dev/null and b/.licenses/npm/mime-db.dep.yml differ
diff --git a/.licenses/npm/mime-types.dep.yml b/.licenses/npm/mime-types.dep.yml
new file mode 100644
index 0000000..d63821d
Binary files /dev/null and b/.licenses/npm/mime-types.dep.yml differ
diff --git a/.licenses/npm/minimatch.dep.yml b/.licenses/npm/minimatch.dep.yml
new file mode 100644
index 0000000..317e4bc
Binary files /dev/null and b/.licenses/npm/minimatch.dep.yml differ
diff --git a/.licenses/npm/node-fetch.dep.yml b/.licenses/npm/node-fetch.dep.yml
new file mode 100644
index 0000000..109c6d0
Binary files /dev/null and b/.licenses/npm/node-fetch.dep.yml differ
diff --git a/.licenses/npm/process.dep.yml b/.licenses/npm/process.dep.yml
new file mode 100644
index 0000000..2bf5059
Binary files /dev/null and b/.licenses/npm/process.dep.yml differ
diff --git a/.licenses/npm/psl.dep.yml b/.licenses/npm/psl.dep.yml
new file mode 100644
index 0000000..385e9aa
Binary files /dev/null and b/.licenses/npm/psl.dep.yml differ
diff --git a/.licenses/npm/punycode.dep.yml b/.licenses/npm/punycode.dep.yml
new file mode 100644
index 0000000..4a9547e
Binary files /dev/null and b/.licenses/npm/punycode.dep.yml differ
diff --git a/.licenses/npm/sax.dep.yml b/.licenses/npm/sax.dep.yml
new file mode 100644
index 0000000..e964a17
Binary files /dev/null and b/.licenses/npm/sax.dep.yml differ
diff --git a/.licenses/npm/semver.dep.yml b/.licenses/npm/semver.dep.yml
new file mode 100644
index 0000000..8c62b4f
Binary files /dev/null and b/.licenses/npm/semver.dep.yml differ
diff --git a/.licenses/npm/tough-cookie-3.0.1.dep.yml b/.licenses/npm/tough-cookie-3.0.1.dep.yml
new file mode 100644
index 0000000..1496c10
Binary files /dev/null and b/.licenses/npm/tough-cookie-3.0.1.dep.yml differ
diff --git a/.licenses/npm/tough-cookie-4.0.0.dep.yml b/.licenses/npm/tough-cookie-4.0.0.dep.yml
new file mode 100644
index 0000000..71ee475
Binary files /dev/null and b/.licenses/npm/tough-cookie-4.0.0.dep.yml differ
diff --git a/.licenses/npm/tslib-1.13.0.dep.yml b/.licenses/npm/tslib-1.13.0.dep.yml
new file mode 100644
index 0000000..2ec88c7
Binary files /dev/null and b/.licenses/npm/tslib-1.13.0.dep.yml differ
diff --git a/.licenses/npm/tslib-2.0.0.dep.yml b/.licenses/npm/tslib-2.0.0.dep.yml
new file mode 100644
index 0000000..638eaf7
Binary files /dev/null and b/.licenses/npm/tslib-2.0.0.dep.yml differ
diff --git a/.licenses/npm/tunnel.dep.yml b/.licenses/npm/tunnel.dep.yml
new file mode 100644
index 0000000..9a7111d
Binary files /dev/null and b/.licenses/npm/tunnel.dep.yml differ
diff --git a/.licenses/npm/universalify.dep.yml b/.licenses/npm/universalify.dep.yml
new file mode 100644
index 0000000..0a1c4cd
Binary files /dev/null and b/.licenses/npm/universalify.dep.yml differ
diff --git a/.licenses/npm/uuid-3.4.0.dep.yml b/.licenses/npm/uuid-3.4.0.dep.yml
new file mode 100644
index 0000000..45970fe
Binary files /dev/null and b/.licenses/npm/uuid-3.4.0.dep.yml differ
diff --git a/.licenses/npm/uuid-8.3.0.dep.yml b/.licenses/npm/uuid-8.3.0.dep.yml
new file mode 100644
index 0000000..9d6ccd9
Binary files /dev/null and b/.licenses/npm/uuid-8.3.0.dep.yml differ
diff --git a/.licenses/npm/xml2js.dep.yml b/.licenses/npm/xml2js.dep.yml
new file mode 100644
index 0000000..ea43d8d
Binary files /dev/null and b/.licenses/npm/xml2js.dep.yml differ
diff --git a/.licenses/npm/xmlbuilder.dep.yml b/.licenses/npm/xmlbuilder.dep.yml
new file mode 100644
index 0000000..2198584
Binary files /dev/null and b/.licenses/npm/xmlbuilder.dep.yml differ
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e11bb5a..c9cfb0a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -27,6 +27,10 @@ Here are a few things you can do that will increase the likelihood of your pull
 - Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests.
 - Write a [good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
 
+## Licensed
+
+This repository uses a tool called [Licensed](https://github.com/github/licensed) to verify third party dependencies. You may need to locally install licensed and run `licensed cache` to update the dependency cache if you install or update a production dependency. If licensed cache is unable to determine the dependency, you may need to modify the cache file yourself to put the correct license. You should still verify the dependency, licensed is a tool to help, but is not a substitute for human review of dependencies.
+
 ## Resources
 
 - [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)