Test management for agentic coding — a TestLink-equivalent evidence & context store for AI QA teams (REST + MCP + CLI).
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio counts 44 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
_stub
-
add_cases_to_plan
-
add_test_dependency
-
assign_test
-
bulk_create_test_cases
-
compare_builds
-
create_annotation
-
create_audit_report
-
create_project
-
create_requirement
-
create_test_case
-
create_test_plan
-
create_test_suite
-
deactivate_agent
-
evaluate_test_case
-
get_agent_execution_history
-
get_build_detail
-
get_case_history
-
get_case_status_map
-
get_coverage_gaps
-
get_execution_evidence
-
get_failure_context
-
get_known_regressions
-
get_orientation
-
get_project_health
-
get_run_manifest
-
get_suite_tree
-
get_test_case
-
link_coverage
-
list_agents
-
list_annotations
-
list_assignments
-
list_branch_status
-
list_build_timeline
-
list_unverified_claims
-
record_test_run
-
register_agent
-
request_rerun
-
search_recurrences
-
search_similar_failures
-
search_test_cases
-
set_quarantine
-
upload_artifact
-
verify_claim
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 5cc8972 · analyzer v33 · 1w ago
skills & prompt files 3
- agent-rules nt1412-aqa-5cc8972/.cursorrules
- agent-rules nt1412-aqa-5cc8972/AGENTS.md
- agent-rules nt1412-aqa-5cc8972/CLAUDE.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 159
filesystem 4
- fs nt1412-aqa-5cc8972/cli/main.py :3
from pathlib import Path - fs (weak) nt1412-aqa-5cc8972/scripts/bugcorpus/load.py :12
from pathlib import Path - fs (weak) nt1412-aqa-5cc8972/scripts/dogfood.py :21
from pathlib import Path - fs (weak) nt1412-aqa-5cc8972/tests/test_migrations.py :12
from pathlib import Path
shell / exec 2
- shell (weak) nt1412-aqa-5cc8972/scripts/dogfood.py :19
import subprocess - shell (weak) nt1412-aqa-5cc8972/tests/test_migrations.py :10
import subprocess
network 3
- net nt1412-aqa-5cc8972/cli/main.py :5
import httpx - net (weak) nt1412-aqa-5cc8972/scripts/_aqaclient.py :10
import httpx - net (weak) nt1412-aqa-5cc8972/tests/conftest.py :2
from httpx import ASGITransport, AsyncClient
secrets 2
- secrets nt1412-aqa-5cc8972/app/services/auth.py :80
secret = os.environ.get("AQA_MCP_ENROLL_KEY") or os.environ.get("AGENTQA_MCP_ENROLL_KEY") - secrets (weak) nt1412-aqa-5cc8972/scripts/_aqaclient.py :18
key = os.environ.get("AQA_API_KEY")
database 49
- db nt1412-aqa-5cc8972/app/api/deps.py :4
from sqlalchemy.ext.asyncio import AsyncSession - db nt1412-aqa-5cc8972/app/db.py :3
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine - db nt1412-aqa-5cc8972/app/models/base.py :3
from sqlalchemy import DateTime, func - db nt1412-aqa-5cc8972/app/models/evidence.py :4
from sqlalchemy import DateTime, ForeignKey, Integer, String, Text, func - db nt1412-aqa-5cc8972/app/models/execution.py :3
from sqlalchemy import DateTime, ForeignKey, Integer, String, Text, func - db nt1412-aqa-5cc8972/app/models/meta.py :3
from sqlalchemy import Boolean, DateTime, ForeignKey, Integer, String, Text, func - db nt1412-aqa-5cc8972/app/models/plan.py :3
from sqlalchemy import Boolean, DateTime, ForeignKey, Integer, String, Text, UniqueConstraint - db nt1412-aqa-5cc8972/app/models/requirement.py :1
from sqlalchemy import Boolean, ForeignKey, Integer, String, Text - db nt1412-aqa-5cc8972/app/models/structure.py :1
from sqlalchemy import Boolean, ForeignKey, Integer, String, Text, UniqueConstraint - db nt1412-aqa-5cc8972/app/models/testcase.py :1
from sqlalchemy import Boolean, ForeignKey, Integer, String, Text, UniqueConstraint - db nt1412-aqa-5cc8972/app/models/user.py :3
from sqlalchemy import Boolean, DateTime, ForeignKey, String, Text - db nt1412-aqa-5cc8972/app/services/annotations.py :1
from sqlalchemy import select - db nt1412-aqa-5cc8972/app/services/assignments.py :1
from sqlalchemy import select - db nt1412-aqa-5cc8972/app/services/auth.py :7
from sqlalchemy import select - db nt1412-aqa-5cc8972/app/services/builds.py :1
from sqlalchemy import select - db nt1412-aqa-5cc8972/app/services/evidence.py :3
from sqlalchemy import Integer, cast, func, select - db nt1412-aqa-5cc8972/app/services/executions.py :3
from sqlalchemy import select - db nt1412-aqa-5cc8972/app/services/lineage.py :8
from sqlalchemy import func, select, text - db nt1412-aqa-5cc8972/app/services/milestones.py :1
from sqlalchemy import select - db nt1412-aqa-5cc8972/app/services/plans.py :1
from sqlalchemy import func, select - db nt1412-aqa-5cc8972/app/services/platforms.py :1
from sqlalchemy import select - db nt1412-aqa-5cc8972/app/services/projects.py :1
from sqlalchemy import select - db nt1412-aqa-5cc8972/app/services/requirements.py :1
from sqlalchemy import select - db nt1412-aqa-5cc8972/app/services/reruns.py :7
from sqlalchemy import select - db nt1412-aqa-5cc8972/app/services/suites.py :1
from sqlalchemy import func, select - db nt1412-aqa-5cc8972/app/services/testcases.py :1
from sqlalchemy import select - db nt1412-aqa-5cc8972/app/services/users.py :1
from sqlalchemy import select - db nt1412-aqa-5cc8972/migrations/env.py :4
from sqlalchemy.ext.asyncio import async_engine_from_config - db nt1412-aqa-5cc8972/migrations/versions/011efae2d289_add_test_cases_quarantined.py :11
import sqlalchemy as sa - db nt1412-aqa-5cc8972/migrations/versions/13de60bfa83f_add_unique_constraints_for_external_id_.py :11
import sqlalchemy as sa - db nt1412-aqa-5cc8972/migrations/versions/27e9dc13d62a_add_build_base_commit_and_lineage_views.py :11
import sqlalchemy as sa - db nt1412-aqa-5cc8972/migrations/versions/4bef8cd70aab_add_annotations_table.py :11
import sqlalchemy as sa - db nt1412-aqa-5cc8972/migrations/versions/5c72a6312244_add_execution_reasoning_embedding_.py :11
import sqlalchemy as sa - db nt1412-aqa-5cc8972/migrations/versions/a7c3f1b9d2e4_add_reasoning_search_text_fts.py :13
import sqlalchemy as sa - db nt1412-aqa-5cc8972/migrations/versions/b2d4f6a8c0e1_add_execution_claim_claimant.py :13
import sqlalchemy as sa - db nt1412-aqa-5cc8972/migrations/versions/bc5d4977f6e4_add_guard_hits_table.py :11
import sqlalchemy as sa - db nt1412-aqa-5cc8972/migrations/versions/e56577598840_initial_schema.py :11
import sqlalchemy as sa - db (weak) nt1412-aqa-5cc8972/scripts/reembed.py :13
from sqlalchemy import text - db (weak) nt1412-aqa-5cc8972/scripts/seed.py :3
from sqlalchemy import select - db (weak) nt1412-aqa-5cc8972/tests/conftest.py :3
from sqlalchemy import text - db (weak) nt1412-aqa-5cc8972/tests/test_embeddings.py :2
from sqlalchemy import select - db (weak) nt1412-aqa-5cc8972/tests/test_evidence_artifacts.py :2
from sqlalchemy import select - db (weak) nt1412-aqa-5cc8972/tests/test_evidence_claims.py :2
from sqlalchemy import select - db (weak) nt1412-aqa-5cc8972/tests/test_evidence_verify.py :2
from sqlalchemy import select - db (weak) nt1412-aqa-5cc8972/tests/test_hierarchy.py :139
from sqlalchemy import update - db (weak) nt1412-aqa-5cc8972/tests/test_migrations.py :15
from sqlalchemy import inspect, text - db (weak) nt1412-aqa-5cc8972/tests/test_reruns.py :2
from sqlalchemy import select - db (weak) nt1412-aqa-5cc8972/tests/test_seed.py :2
from sqlalchemy import select - db (weak) nt1412-aqa-5cc8972/tests/test_services.py :2
from sqlalchemy import text
tool registrations 44
- get_orientation nt1412-aqa-5cc8972/app/mcp_server/server.py :204
- create_project nt1412-aqa-5cc8972/app/mcp_server/server.py :217
- create_test_suite nt1412-aqa-5cc8972/app/mcp_server/server.py :231
- create_test_case nt1412-aqa-5cc8972/app/mcp_server/server.py :239
- bulk_create_test_cases nt1412-aqa-5cc8972/app/mcp_server/server.py :269
- get_test_case nt1412-aqa-5cc8972/app/mcp_server/server.py :293
- search_test_cases nt1412-aqa-5cc8972/app/mcp_server/server.py :310
- record_test_run nt1412-aqa-5cc8972/app/mcp_server/server.py :318
- assign_test nt1412-aqa-5cc8972/app/mcp_server/server.py :383
- list_assignments nt1412-aqa-5cc8972/app/mcp_server/server.py :412
- upload_artifact nt1412-aqa-5cc8972/app/mcp_server/server.py :437
- list_unverified_claims nt1412-aqa-5cc8972/app/mcp_server/server.py :458
- verify_claim nt1412-aqa-5cc8972/app/mcp_server/server.py :470
- create_audit_report nt1412-aqa-5cc8972/app/mcp_server/server.py :487
- evaluate_test_case nt1412-aqa-5cc8972/app/mcp_server/server.py :512
- get_execution_evidence nt1412-aqa-5cc8972/app/mcp_server/server.py :520
- get_agent_execution_history nt1412-aqa-5cc8972/app/mcp_server/server.py :528
- get_failure_context nt1412-aqa-5cc8972/app/mcp_server/server.py :545
- search_similar_failures nt1412-aqa-5cc8972/app/mcp_server/server.py :555
- search_recurrences nt1412-aqa-5cc8972/app/mcp_server/server.py :563
- create_requirement nt1412-aqa-5cc8972/app/mcp_server/server.py :580
- link_coverage nt1412-aqa-5cc8972/app/mcp_server/server.py :605
- get_coverage_gaps nt1412-aqa-5cc8972/app/mcp_server/server.py :618
- list_build_timeline nt1412-aqa-5cc8972/app/mcp_server/server.py :629
- get_build_detail nt1412-aqa-5cc8972/app/mcp_server/server.py :637
- get_case_history nt1412-aqa-5cc8972/app/mcp_server/server.py :645
- compare_builds nt1412-aqa-5cc8972/app/mcp_server/server.py :653
- list_branch_status nt1412-aqa-5cc8972/app/mcp_server/server.py :663
- get_case_status_map nt1412-aqa-5cc8972/app/mcp_server/server.py :673
- get_project_health nt1412-aqa-5cc8972/app/mcp_server/server.py :683
- get_known_regressions nt1412-aqa-5cc8972/app/mcp_server/server.py :692
- create_annotation nt1412-aqa-5cc8972/app/mcp_server/server.py :708
- list_annotations nt1412-aqa-5cc8972/app/mcp_server/server.py :722
- set_quarantine nt1412-aqa-5cc8972/app/mcp_server/server.py :732
- request_rerun nt1412-aqa-5cc8972/app/mcp_server/server.py :743
- register_agent nt1412-aqa-5cc8972/app/mcp_server/server.py :769
- get_suite_tree nt1412-aqa-5cc8972/app/mcp_server/server.py :822
- list_agents nt1412-aqa-5cc8972/app/mcp_server/server.py :837
- deactivate_agent nt1412-aqa-5cc8972/app/mcp_server/server.py :848
- create_test_plan nt1412-aqa-5cc8972/app/mcp_server/server.py :858
- add_cases_to_plan nt1412-aqa-5cc8972/app/mcp_server/server.py :871
- add_test_dependency nt1412-aqa-5cc8972/app/mcp_server/server.py :887
- get_run_manifest nt1412-aqa-5cc8972/app/mcp_server/server.py :903
- _stub nt1412-aqa-5cc8972/app/mcp_server/server.py :925
declared dependencies 20
- mcp@>=1.1
- fastapi@>=0.115
- uvicorn@>=0.32
- sqlalchemy@>=2.0.36
- asyncpg@>=0.30
- alembic@>=1.14
- pydantic@>=2.10
- pydantic-settings@>=2.6
- python-jose@>=3.3
- passlib@>=1.7
- bcrypt@>=4.0,<5
- pgvector@>=0.3.6
- minio@>=7.2
- typer@>=0.13
- httpx@>=0.28
- python-multipart@>=0.0.12
- pytest@>=8.3
- pytest-asyncio@>=0.24
- ruff@>=0.8
- sentence-transformers@>=3.0