Grades are a hygiene check, not a security guarantee.

MCP, MCP server

io.github.LembaGang/headless-oracle

Real-time, cryptographically signed (Ed25519) market status for 23 global exchanges.

Compatibility: Not stated.

Grade D

Two or more Medium findings, or a High finding. Only try it in a sandbox.

Graded by PlugVetRubric v2

Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.

Rescanned at commit 8dd86e9d5af8.

SECRETS_PATH_CREDENTIAL OBFUSCATION_ENCODED_BLOB OBFUSCATION_MINIFIED_PAYLOAD

Why this grade

  • SECRETS_PATH_CREDENTIAL Medium

    Mentions a credential store path (~/.ssh, id_rsa, .npmrc, .aws/credentials, credentials.json, .netrc).

    sample-agentcore-cloudfront-x402-payments/payer-agent/scripts/invoke_gateway.py, line 18 - AWS credentials file (~/.aws/credentials)

  • OBFUSCATION_ENCODED_BLOB Medium

    Contains a long base64 shaped string in a file that should be readable.

    sample-agentcore-cloudfront-x402-payments/payer-infrastructure/bin/app.js, line 64 MappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7

  • OBFUSCATION_MINIFIED_PAYLOAD Medium

    Contains a very long line with almost no spaces in a script or style file.

    sample-agentcore-cloudfront-x402-payments/payer-infrastructure/bin/app.js, line 64 MappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7

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

    Note

    requests shell access. The manifest names this permission.

    PERMISSION_SHELL_DECLARED

    sample-agentcore-cloudfront-x402-payments/payer-agent/scripts/deploy_to_agentcore.py, line 78

    result = subprocess.run(

    sample-agentcore-cloudfront-x402-payments/payer-agent/scripts/deploy_to_agentcore.py, line 100

    result = subprocess.run(

    sample-agentcore-cloudfront-x402-payments/payer-agent/scripts/deploy_to_agentcore.py, line 116

    result = subprocess.run(

  • 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. can reach api.headlessoracle.com. The description does not name that host.

    NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST

    docs/multi-exchange-monitor.ts, line 130

    const res = await fetch(url, {

    github-action/index.js, line 6

    https.get(url, { headers: { 'User-Agent': 'headless-oracle-market-gate/1.0' } }, (res) => {

    packages/headless-oracle-mcp/bin/cli.js, line 37

    const req = https.request(

    Show more

    sample-agentcore-cloudfront-x402-payments/payer-infrastructure/lib/agentcore-stack.js, line 821

    curl -X GET "https://<gateway-url>/v1/mcp/tools" -H "Authorization: AWS4-HMAC-SHA256 ..."

    sample-agentcore-cloudfront-x402-payments/payer-infrastructure/lib/agentcore-stack.ts, line 945

    curl -X GET "https://<gateway-url>/v1/mcp/tools" -H "Authorization: AWS4-HMAC-SHA256 ..."

    sample-agentcore-cloudfront-x402-payments/seller-infrastructure/lib/lambda-edge/payment-verifier.js, line 300

    const response = await fetch(`${FACILITATOR_URL}/verify`, {

    sample-agentcore-cloudfront-x402-payments/seller-infrastructure/lib/lambda-edge/payment-verifier.js, line 352

    const response = await fetch(`${FACILITATOR_URL}/settle`, {

    sample-agentcore-cloudfront-x402-payments/seller-infrastructure/lib/lambda-edge/payment-verifier.ts, line 350

    const response = await fetch(`${FACILITATOR_URL}/verify`, {

  • Secrets

    Concern

    reads a credential or environment file.

    SECRETS_ENV_READ SECRETS_PATH_CREDENTIAL SECRETS_PATH_DOTENV

    docs/multi-exchange-monitor.ts, line 25

    const API_KEY = process.env.ORACLE_API_KEY ?? '';

    packages/headless-oracle-mcp/bin/cli.js, line 12

    const API_KEY = process.env.HEADLESS_ORACLE_API_KEY || '';

    sample-agentcore-cloudfront-x402-payments/payer-agent/scripts/invoke_gateway.py, line 18

    - AWS credentials file (~/.aws/credentials)

    Show more

    sample-agentcore-cloudfront-x402-payments/payer-agent/agent/config.py, line 50

    cdp_api_key_name=os.getenv("CDP_API_KEY_ID", ""),

    sample-agentcore-cloudfront-x402-payments/payer-agent/agent/config.py, line 51

    cdp_api_key_private_key=os.getenv("CDP_API_KEY_SECRET", ""),

    sample-agentcore-cloudfront-x402-payments/payer-agent/agent/config.py, line 52

    cdp_wallet_secret=os.getenv("CDP_WALLET_SECRET", ""),

    sample-agentcore-cloudfront-x402-payments/payer-agent/agent/config.py, line 60

    oracle_api_key=os.getenv("ORACLE_API_KEY", ""),

    scripts/health-check.mjs, line 39

    const MASTER_KEY = process.env.MASTER_API_KEY ?? null;

    scripts/test-paddle-webhook.ts, line 194

    const secret = process.env.PADDLE_WEBHOOK_SECRET;

    sample-agentcore-cloudfront-x402-payments/payer-agent/scripts/deploy_to_agentcore.py, line 20

    load_dotenv(Path(__file__).parent.parent / ".env")

    sample-agentcore-cloudfront-x402-payments/payer-agent/scripts/deploy_to_agentcore.py, line 161

    env_file = agent_dir / ".env"

    sample-agentcore-cloudfront-x402-payments/payer-agent/scripts/deploy_to_agentcore.py, line 164

    print("Warning: .env file not found, runtime may not have required credentials")

    sample-agentcore-cloudfront-x402-payments/payer-agent/scripts/deploy_to_agentcore.py, line 258

    """Update a key=value in payer-agent/.env, or append if missing."""

    sample-agentcore-cloudfront-x402-payments/payer-agent/scripts/deploy_to_agentcore.py, line 259

    env_file = Path(__file__).parent.parent / ".env"

    sample-agentcore-cloudfront-x402-payments/payer-agent/scripts/deploy_to_agentcore.py, line 269

    print(f" Updated .env → {key}={value}")

    sample-agentcore-cloudfront-x402-payments/payer-agent/scripts/get_cloudfront_url.sh, line 102

    echo -e "${YELLOW}To set these in your .env file:${NC}"

  • 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. contains a minified payload.

    OBFUSCATION_ENCODED_BLOB OBFUSCATION_MINIFIED_PAYLOAD

    sample-agentcore-cloudfront-x402-payments/payer-infrastructure/bin/app.js, line 64

    MappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7

    sample-agentcore-cloudfront-x402-payments/payer-infrastructure/bin/app.js, line 64

    //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Oz

    sample-agentcore-cloudfront-x402-payments/payer-infrastructure/lib/agentcore-stack.js, line 874

    MappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnRjb3JlLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYWdlbnRjb3JlLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFw

    Show more

    sample-agentcore-cloudfront-x402-payments/payer-infrastructure/lib/agentcore-stack.js, line 874

    //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnRjb3JlLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYWdlbnRjb3JlLXN0YWNrLnRzIl0sIm5hbWVzIj

    sample-agentcore-cloudfront-x402-payments/payer-infrastructure/lib/observability-stack.js, line 1163

    MappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJpbGl0eS1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm9ic2VydmFiaWxpdHktc3RhY2sudHMiXSwibmFtZXMi

    sample-agentcore-cloudfront-x402-payments/payer-infrastructure/lib/observability-stack.js, line 1163

    //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJpbGl0eS1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm9ic2VydmFiaWxpdHktc3RhY2sudHMiXS

    sample-agentcore-cloudfront-x402-payments/seller-infrastructure/bin/app.js, line 51

    MappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7

    sample-agentcore-cloudfront-x402-payments/seller-infrastructure/bin/app.js, line 51

    //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Oz

    worker-configuration.d.ts, line 1

    /* eslint-disable */

    docs/security/sbom.json, line 1

    {

    sample-agentcore-cloudfront-x402-payments/seller-infrastructure/package-lock.json, line 1

    {

    src/index.ts, line 1

    import * as ed from '@noble/ed25519';

    test/index.spec.ts, line 1

    import { env, createExecutionContext, waitOnExecutionContext, createScheduledController } from 'cloudflare:test';

  • 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 8dd86e9d5af8. requests shell access. The manifest names this permission. can reach a host that is not written as a fixed address. can reach api.headlessoracle.com. The description does not name that host. reads a credential or environment file. contains an encoded blob in a file that should be readable. contains a minified payload.

Date and source

Date checked:

View source

github.com

Commit graded: 8dd86e9d5af86294bc3ae1eeaee36849521e3603

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.

Read how this letter is chosen