MCP, MCP server
BoostedTravel
Flight search & booking for AI agents.
Compatibility: Not stated.
Grade B
Minor issues only, no Medium or High. Worth a quick look at the findings below before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
Rescanned at commit f01e291f23e4.
PERMISSION_DELETE_FILES NETWORK_NO_FIXED_HOST SECRETS_PATH_DOTENV OBFUSCATION_ENCODED_BLOB SECRETS_ENV_READ
Why this grade
- PERMISSION_DELETE_FILES Low
Contains a call that can delete files.
preview/run.py, line 142
os.remove(cfg_path) - NETWORK_NO_FIXED_HOST Low
Makes a network call whose host is not written as a fixed address.
Model.js, line 1836
// I got this wrong once by checking an anonymous curl payload and concluding - SECRETS_PATH_DOTENV Low
Mentions a .env file.
.dockerignore, line 87
.env - OBFUSCATION_ENCODED_BLOB Low
Contains a long base64 shaped string in a file that should be readable.
assets/airports.json, line 1
[{"c":"AAA","n":"Anaa","y":"PF","city":0,"u":1,"lat":-17.3526,"lon":-145.51},{"c":"AAB","n":"Arrabury","y":"AU","city":0},{"c":"AAC","n":"El Arish","y":"EG","city":0,"u":1,"lat":31 - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
AGENTS.md, line 591
const bt = new LetsFG({ bearerToken: process.env.LETSFG_BEARER_TOKEN });
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
can delete files.
PERMISSION_DELETE_FILES
preview/run.py, line 142
os.remove(cfg_path)
preview/run.py, line 300
os.remove(stale)
tools/build-ranking.py, line 101
proc = subprocess.run(cmd, capture_output=True, text=True, shell=(os.name == "nt"))
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Concern
can reach a host that is not written as a fixed address.
NETWORK_NO_FIXED_HOST
Model.js, line 1836
// I got this wrong once by checking an anonymous curl payload and concluding
sdk/js/src/auth.ts, line 141
const resp = await fetch(`${DEV_ROOT}/.well-known/oauth-authorization-server`);
sdk/js/src/auth.ts, line 164
const resp = await fetch(url, {
Show more
sdk/js/src/auth.ts, line 286
const reg = await fetch(meta.registration_endpoint, {
sdk/js/src/index.test.ts, line 53
// sets User-Agent: LetsFG-js/0.1.0. register() builds its own bare fetch()
sdk/js/src/index.ts, line 5
* or prepaid Developer API. Zero external JS dependencies. Uses native fetch (Node 18+).
sdk/js/src/index.ts, line 984
const resp = await fetch(`${url}/developers/api/v1/agents/register`, {
sdk/js/src/index.ts, line 1047
const resp = await fetch(`${this.baseUrl}${path}`, {
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
AGENTS.md, line 591
const bt = new LetsFG({ bearerToken: process.env.LETSFG_BEARER_TOKEN });
preview/run.py, line 137
token = os.environ.get("LETSFG_BEARER_TOKEN", "").strip()
.dockerignore, line 87
.env
Show more
preview/run.py, line 146
expires_at = float(os.environ.get("LETSFG_TOKEN_EXPIRES_AT", "") or (time.time() + 80 * 86400))
sdk/js/src/auth.test.ts, line 18
LETSFG_BEARER_TOKEN: process.env.LETSFG_BEARER_TOKEN,
sdk/js/src/auth.test.ts, line 22
delete process.env.LETSFG_BEARER_TOKEN;
sdk/js/src/auth.test.ts, line 40
process.env.LETSFG_BEARER_TOKEN = '
sdk/js/src/auth.ts, line 97
const env = process.env.LETSFG_BEARER_TOKEN;
sdk/js/src/auth.ts, line 119
const env = process.env.LETSFG_BEARER_TOKEN;
.gitignore, line 7
.env
docker-compose.yml, line 9
# With API key (create a .env file first):
docker-compose.yml, line 10
# echo "LETSFG_API_KEY=trav_..." > .env
docs/self-hosting.md, line 236
# .env
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Concern
contains an encoded blob in a file that should be readable.
OBFUSCATION_ENCODED_BLOB
assets/airports.json, line 1
[{"c":"AAA","n":"Anaa","y":"PF","city":0,"u":1,"lat":-17.3526,"lon":-145.51},{"c":"AAB","n":"Arrabury","y":"AU","city":0},{"c":"AAC","n":"El Arish","y":"EG","city":0,"u":1,"lat":31
sdk/python/google_checkout_live_sweep_longhaul_london_us.json, line 58
"resolved_booking_url": "https://www.google.com/travel/flights/booking?tfs=CBwQAhpfEgoyMDI2LTA2LTI0Ih0KA0xIUhIKMjAyNi0wNi0yNBoDTVNQKgJETDIBOSIgCgNNU1ASCjIwMjYtMDYtMjQaA1NGTyoCREwyB
sdk/python/google_checkout_live_sweep_longhaul_london_us.json, line 81
"resolved_booking_url": "https://www.google.com/travel/flights/booking?tfs=CBwQAhpgEgoyMDI2LTA2LTI0Ih8KA0xIUhIKMjAyNi0wNi0yNBoDS0VGKgJGSTIDNDU1Ih8KA0tFRhIKMjAyNi0wNi0yNRoDU0VBKgJGS
Show more
sdk/python/google_checkout_live_sweep_results.json, line 323
"resolved_booking_url": "https://www.google.com/travel/flights/booking?tfs=CBwQAhpfEgoyMDI2LTA2LTI1Ih8KA0JFWRIKMjAyNi0wNi0yNRoDU0FXKgJWRjIDMjYyIh4KA1NBVxIKMjAyNi0wNi0yNRoDQ0RHKgJWR
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit f01e291f23e4. can delete files. can reach a host that is not written as a fixed address. reads a credential or environment file. contains an encoded blob in a file that should be readable.
Date and source
Date checked:
github.com
Commit graded: f01e291f23e44b712bc0ea207dbf8a6144c110bc
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.