Protocol for agent-to-agent communication with stateful orchestration, MCP-compatible and a public marketplace to discover and register agents.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 3 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
_whitelist_invoke
-
asap_discover
-
asap_invoke
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 509fdb2 · analyzer v33 · 21h ago
skills & prompt files 13
- agent-rules asap-protocol-asap-protocol-509fdb2/.cursor/rules/agent-clean-code.mdc
- agent-rules asap-protocol-asap-protocol-509fdb2/.cursor/rules/architecture-principles.mdc
- agent-rules asap-protocol-asap-protocol-509fdb2/.cursor/rules/frontend-best-practices.mdc
- agent-rules asap-protocol-asap-protocol-509fdb2/.cursor/rules/git-commits.mdc
- agent-rules asap-protocol-asap-protocol-509fdb2/.cursor/rules/python-best-practices.mdc
- agent-rules asap-protocol-asap-protocol-509fdb2/.cursor/rules/security-standards.mdc
- agent-rules asap-protocol-asap-protocol-509fdb2/.cursor/rules/testing-rate-limiting.mdc
- agent-rules asap-protocol-asap-protocol-509fdb2/.cursor/rules/testing-standards.mdc
- skill asap-protocol-asap-protocol-509fdb2/.cursor/skills/code-quality-review/SKILL.md
- skill asap-protocol-asap-protocol-509fdb2/.cursor/skills/security-review/SKILL.md
- skill asap-protocol-asap-protocol-509fdb2/.cursor/skills/skill-creator/SKILL.md
- skill asap-protocol-asap-protocol-509fdb2/.cursor/skills/testing-rate-limiting/SKILL.md
- agent-rules asap-protocol-asap-protocol-509fdb2/AGENTS.md
danger signals8
- suspicious endpoint 169.254.169.254 (cloud metadata) asap-protocol-asap-protocol-509fdb2/tests/registry/test_auto_registration.py :564
headers={"Location": "http://169.254.169.254/latest/meta-data/"}, - suspicious endpoint 169.254.169.254 (cloud metadata) asap-protocol-asap-protocol-509fdb2/tests/scripts/test_aggregate.py :401
aggregate_mod.validate_site_endpoint("https://169.254.169.254/latest/meta-data/") - suspicious endpoint 169.254.169.254 (cloud metadata) asap-protocol-asap-protocol-509fdb2/tests/scripts/test_process_registration.py :171
fetch_manifest("http://169.254.169.254/latest/meta-data/") - suspicious endpoint 169.254.169.254 (cloud metadata) asap-protocol-asap-protocol-509fdb2/tests/scripts/test_safe_url.py :33
assert is_safe_http_url("https://169.254.169.254/latest/meta-data/") is False - suspicious endpoint 93.184.216.34 asap-protocol-asap-protocol-509fdb2/tests/scripts/test_safe_url.py :49
assert is_safe_http_url("https://93.184.216.34/path") is True - suspicious endpoint 169.254.169.254 (cloud metadata) asap-protocol-asap-protocol-509fdb2/tests/testing/test_compliance_v2.py :202
headers={"Location": "http://169.254.169.254/latest/meta-data/"}, - suspicious endpoint 93.184.216.34 asap-protocol-asap-protocol-509fdb2/tests/transport/unit/test_webhook.py :138
await validate_callback_url("https://93.184.216.34/hook") - committed secret private key asap-protocol-asap-protocol-509fdb2/tests/fixtures/asap_ca/ca_private.pem :1
PEM private key block (redacted)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 827
filesystem 104
- fs (weak) asap-protocol-asap-protocol-509fdb2/.cursor/skills/skill-creator/scripts/init_skill.py :4
from pathlib import Path - fs asap-protocol-asap-protocol-509fdb2/asap-compliance/asap_compliance/config.py :7
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/asap-compliance/tests/test_mcp_auth.py :6
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/examples/mcp_auth_bridge/client.py :27
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/examples/nemo_agent_toolkit_asap/asap_mcp_server.py :27
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/examples/nemo_agent_toolkit_asap/smoke_asap_side.py :23
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/examples/openapi_petstore/main.py :8
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/examples/starters/_forward_smoke.py :7
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/examples/starters/mcp-auth-bridge/run.py :6
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/examples/starters/openapi-provider/run.py :6
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/examples/workflow_asap_connector/main.py :12
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/check_auto_registration_merge_eligible.py :28
from pathlib import Path
show 28 more
- fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/diversify_registry_asap_versions.py :18
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/export_schemas.py :11
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/generate_types.py :12
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/lib/registry_io.py :13
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/lint_no_transport_growth.py :30
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/process_registration.py :19
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/process_removal.py :20
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/process_revocation.py :21
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/regenerate_signed_fixtures.py :14
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/seed_registry.py :14
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/telemetry/aggregate.py :33
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/telemetry/collect_github.py :26
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/telemetry/collect_npm.py :15
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/telemetry/collect_pypi.py :19
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/telemetry/collect_registry.py :20
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/validate_registry.py :20
from pathlib import Path - fs (weak) asap-protocol-asap-protocol-509fdb2/scripts/validate_revoked.py :15
from pathlib import Path - fs asap-protocol-asap-protocol-509fdb2/src/asap/adapters/openapi/factory.py :8
from pathlib import Path - fs asap-protocol-asap-protocol-509fdb2/src/asap/adapters/openapi/spec_loader.py :8
from pathlib import Path - fs asap-protocol-asap-protocol-509fdb2/src/asap/auth/webauthn_store.py :20
from pathlib import Path - fs asap-protocol-asap-protocol-509fdb2/src/asap/cli/audit_export.py :10
from pathlib import Path - fs asap-protocol-asap-protocol-509fdb2/src/asap/cli/delegation.py :8
from pathlib import Path - fs asap-protocol-asap-protocol-509fdb2/src/asap/cli/keys.py :5
from pathlib import Path - fs asap-protocol-asap-protocol-509fdb2/src/asap/cli/manifest.py :6
from pathlib import Path - fs asap-protocol-asap-protocol-509fdb2/src/asap/cli/schemas.py :6
from pathlib import Path - fs asap-protocol-asap-protocol-509fdb2/src/asap/cli/trace.py :8
from pathlib import Path - fs asap-protocol-asap-protocol-509fdb2/src/asap/crypto/keys.py :8
from pathlib import Path - fs asap-protocol-asap-protocol-509fdb2/src/asap/economics/delegation_storage.py :18
from pathlib import Path
64 more not shown — this panel samples each group; the count above is the real total.
shell / exec 14
- shell (weak) asap-protocol-asap-protocol-509fdb2/examples/starters/_forward_smoke.py :5
import subprocess - shell (weak) asap-protocol-asap-protocol-509fdb2/scripts/generate_types.py :11
import subprocess - shell (weak) asap-protocol-asap-protocol-509fdb2/src/asap/examples/agent_failover.py :23
import subprocess # nosec B404 - shell (weak) asap-protocol-asap-protocol-509fdb2/src/asap/examples/run_demo.py :11
import subprocess # nosec B404 - shell asap-protocol-asap-protocol-509fdb2/src/asap/registry/bot_pr.py :15
import subprocess # nosec B404 - shell (weak) asap-protocol-asap-protocol-509fdb2/tests/examples/test_agent_failover.py :11
import subprocess - shell (weak) asap-protocol-asap-protocol-509fdb2/tests/examples/test_forward_smoke.py :6
import subprocess - shell (weak) asap-protocol-asap-protocol-509fdb2/tests/examples/test_mcp_auth_bridge_example.py :12
import subprocess - shell (weak) asap-protocol-asap-protocol-509fdb2/tests/examples/test_nemo_agent_toolkit_asap.py :12
import subprocess - shell (weak) asap-protocol-asap-protocol-509fdb2/tests/examples/test_run_demo.py :7
import subprocess - shell (weak) asap-protocol-asap-protocol-509fdb2/tests/examples/test_typescript_consumer_smoke.py :7
import subprocess - shell (weak) asap-protocol-asap-protocol-509fdb2/tests/observability/test_jaeger_tracing.py :12
import subprocess
show 2 more
- shell (weak) asap-protocol-asap-protocol-509fdb2/tests/registry/test_bot_pr.py :5
import subprocess - shell (weak) asap-protocol-asap-protocol-509fdb2/tests/scripts/test_seed_registry.py :68
import subprocess
network 128
- net asap-protocol-asap-protocol-509fdb2/asap-compliance/asap_compliance/validators/handshake.py :7
from urllib.parse import urljoin - net asap-protocol-asap-protocol-509fdb2/asap-compliance/asap_compliance/validators/mcp_auth.py :9
import httpx - net asap-protocol-asap-protocol-509fdb2/asap-compliance/asap_compliance/validators/sla.py :10
import httpx - net asap-protocol-asap-protocol-509fdb2/asap-compliance/asap_compliance/validators/state.py :14
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/asap-compliance/tests/conftest.py :7
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/asap-compliance/tests/test_handshake.py :7
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/asap-compliance/tests/test_sla.py :7
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/asap-compliance/tests/test_state.py :7
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/asap-compliance/tests/test_state_integration.py :7
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/benchmarks/benchmark_crypto.py :16
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/benchmarks/benchmark_transport.py :25
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/benchmarks/memory_test.py :48
import httpx
show 28 more
- net (weak) asap-protocol-asap-protocol-509fdb2/examples/openapi_petstore/main.py :11
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/examples/workflow_asap_connector/main.py :15
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/examples/workflow_asap_connector/mock_upstream.py :8
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/scripts/lib/safe_url.py :10
import socket - net (weak) asap-protocol-asap-protocol-509fdb2/scripts/process_registration.py :21
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/scripts/telemetry/aggregate.py :35
from urllib.parse import urlparse - net (weak) asap-protocol-asap-protocol-509fdb2/scripts/telemetry/collect_github.py :29
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/scripts/telemetry/collect_npm.py :16
from urllib.parse import quote - net (weak) asap-protocol-asap-protocol-509fdb2/scripts/telemetry/collect_registry.py :22
from urllib.parse import urlparse - net asap-protocol-asap-protocol-509fdb2/src/asap/adapters/openapi/factory.py :10
from urllib.parse import urljoin - net asap-protocol-asap-protocol-509fdb2/src/asap/adapters/openapi/handler.py :9
from urllib.parse import quote - net asap-protocol-asap-protocol-509fdb2/src/asap/adapters/openapi/spec_loader.py :10
from urllib.parse import urlparse - net asap-protocol-asap-protocol-509fdb2/src/asap/auth/introspection.py :15
import httpx - net asap-protocol-asap-protocol-509fdb2/src/asap/auth/jwks.py :14
import httpx - net asap-protocol-asap-protocol-509fdb2/src/asap/auth/middleware.py :16
import httpx - net asap-protocol-asap-protocol-509fdb2/src/asap/auth/oauth2.py :14
import httpx - net asap-protocol-asap-protocol-509fdb2/src/asap/auth/oidc.py :14
from urllib.parse import urlparse - net asap-protocol-asap-protocol-509fdb2/src/asap/cli/compliance_check.py :9
import httpx - net asap-protocol-asap-protocol-509fdb2/src/asap/client/cache.py :7
import httpx - net asap-protocol-asap-protocol-509fdb2/src/asap/client/http_client.py :9
import httpx - net asap-protocol-asap-protocol-509fdb2/src/asap/client/market.py :8
import httpx - net asap-protocol-asap-protocol-509fdb2/src/asap/client/revocation.py :11
import httpx - net asap-protocol-asap-protocol-509fdb2/src/asap/discovery/dnssd.py :14
import socket - net asap-protocol-asap-protocol-509fdb2/src/asap/discovery/registry.py :15
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/src/asap/examples/a2h_approval.py :26
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/src/asap/examples/agent_failover.py :32
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/src/asap/examples/run_demo.py :16
import httpx - net (weak) asap-protocol-asap-protocol-509fdb2/src/asap/examples/secure_agent.py :30
import httpx
88 more not shown — this panel samples each group; the count above is the real total.
secrets 4
- secrets asap-protocol-asap-protocol-509fdb2/apps/registry-bot/src/registry_bot/app.py :24
token = os.environ.get("GITHUB_TOKEN", "").strip() - secrets (weak) asap-protocol-asap-protocol-509fdb2/scripts/telemetry/aggregate.py :580
os.environ.get("TELEMETRY_GITHUB_TOKEN", "").strip() - secrets asap-protocol-asap-protocol-509fdb2/src/asap/mcp/serve.py :134
default=os.environ.get("ASAP_AUTH_TOKEN"), - secrets asap-protocol-asap-protocol-509fdb2/src/asap/registry/bot_pr.py :97
github_token: str = field(default_factory=lambda: os.environ.get("GITHUB_TOKEN", ""))
database 3
- db asap-protocol-asap-protocol-509fdb2/src/asap/auth/jti_replay_cache.py :13
from redis import Redis - db asap-protocol-asap-protocol-509fdb2/src/asap/transport/rate_limit.py :209
import redis # noqa: F401 - db (weak) asap-protocol-asap-protocol-509fdb2/tests/cli/test_audit_export.py :162
import sqlite3
tool registrations 3
- asap_invoke asap-protocol-asap-protocol-509fdb2/src/asap/mcp/serve.py :73
- asap_discover asap-protocol-asap-protocol-509fdb2/src/asap/mcp/serve.py :82
- _whitelist_invoke asap-protocol-asap-protocol-509fdb2/src/asap/mcp/serve.py :106
declared dependencies 52
- mcp@>=1.28.1
- aiosqlite@>=0.20
- cryptography@>=50.0.0,<51
- jcs@>=0.2.0
- jsonschema@>=4.23.0
- pydantic@>=2.12.5,<3
- fastapi@>=0.136.1
- httpx@>=0.28.1
- authlib@>=1.6.12,<2
- joserfc@>=1.6.7,<2
- uvicorn@>=0.34
- python-ulid@>=3.0
show 28 more
- packaging@>=25.0
- limits@>=3.0
- structlog@>=24.1
- typer@>=0.21.1
- watchfiles@>=0.21.0
- websockets@>=12.0
- brotli@>=1.2.0
- opentelemetry-api@>=1.20
- opentelemetry-sdk@>=1.20
- opentelemetry-instrumentation-fastapi@>=0.41
- opentelemetry-instrumentation-httpx@>=0.41
- opentelemetry-exporter-otlp-proto-grpc@>=1.20
- asgi-lifespan@>=2.1.0
- pytest@>=9.0.3
- pytest-asyncio@>=0.24
- pytest-cov@>=6.0
- pytest-benchmark@>=5.1
- pytest-xdist@>=3.5.0
- mypy@>=1.19.1
- types-jsonschema@>=4.0.0
- ruff@>=0.14.14
- pip-audit@>=2.7
- fakeredis@>=2.26.0
- ghp-import@>=2.1.0
- mkdocs-material@>=9.7.7
- mkdocstrings@>=0.27
- pymdown-extensions@>=11.0.1
- python-engineio@>=4.13.2
12 more not shown — this panel samples each group; the count above is the real total.
cursor-plugin 4
- opaque (low) asap-protocol-asap-protocol-509fdb2/.cursor/README.md
bundled .cursor/ plugin descriptor (asap-protocol-asap-protocol-509fdb2/.cursor/README.md) — presence-detected; review the descriptor - opaque (low) asap-protocol-asap-protocol-509fdb2/.cursor/rules/agent-clean-code.mdc
bundled .cursor/ plugin descriptor (asap-protocol-asap-protocol-509fdb2/.cursor/rules/agent-clean-code.mdc) — presence-detected; review the descriptor - opaque (low) asap-protocol-asap-protocol-509fdb2/.cursor/settings.json
bundled .cursor/ plugin descriptor (asap-protocol-asap-protocol-509fdb2/.cursor/settings.json) — presence-detected; review the descriptor - opaque (low) asap-protocol-asap-protocol-509fdb2/.cursor/skills/code-quality-review/SKILL.md
bundled .cursor/ plugin descriptor (asap-protocol-asap-protocol-509fdb2/.cursor/skills/code-quality-review/SKILL.md) — presence-detected; review the descriptor