direct-falkor-access — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited direct-falkor-access (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use this skill only when the user explicitly wants direct FalkorDB access outside the MCP safety layer.
This is for cases like:
grand_visionDo not use this skill for normal PPV graph reads or simple agent-owned links. For that, use the regular falkor-graph skill and the MCP tools.
Expect these environment values to exist somewhere local before attempting direct access:
FALKOR_BROWSER_ENDPOINTFALKOR_HOSTFALKOR_PORTFALKOR_USERFALKOR_PASSFALKOR_TLSIn this workspace they may live in a repo env file such as .env.local, but do not assume the exact path in other environments.
Never print raw credentials, session cookies, or bearer tokens back to the user. If you must report config, redact values as [REDACTED].
Prefer MCP when the task is any of the following:
AGENT_LINK relationships onlyUse direct access only when the user explicitly asks to go outside MCP or the task requires graph-level admin operations that MCP cannot do.
The Falkor browser uses an authenticated web session. A workable scripted flow is:
GET /api/auth/csrfPOST /api/auth/callback/credentialscsrfToken, callbackUrl, json, host, port, username, password, tlsGET /api/auth/sessionactiveConnectionIdX-Connection-Id header for graph operations.GET /api/graph/{graphName}?query=<urlencoded cypher>
Notes:
event: and data:event: resultevent: errorPOST /api/graph/{graphName}
Observed successful response shape:
{"message":"Graph created successfully"}DELETE /api/graph/{graphName}
Observed successful response shape:
{"message":"<graph> graph deleted"}grand visiongrand_vision.MERGEUse execute_code or a local Python script when the flow needs auth + multiple dependent requests.
from pathlib import Path
import re, json, urllib.request, urllib.parse, urllib.error, http.cookiejar
env = Path('/path/to/.env.local').read_text()
def get(key: str) -> str:
m = re.search(rf'^{re.escape(key)}=(.*)$', env, re.M)
return m.group(1).strip() if m else ''
base = get('FALKOR_BROWSER_ENDPOINT')
auth_fields = {
'host': get('FALKOR_HOST'),
'port': get('FALKOR_PORT'),
'username': get('FALKOR_USER'),
'password': get('FALKOR_PASS'),
'tls': get('FALKOR_TLS').lower(),
}
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
def http(url, data=None, headers=None, method=None):
req = urllib.request.Request(url, data=data, headers=headers or {}, method=method)
try:
with opener.open(req, timeout=30) as r:
return r.status, r.read().decode('utf-8', 'ignore'), dict(r.headers)
except urllib.error.HTTPError as e:
return e.code, e.read().decode('utf-8', 'ignore'), dict(e.headers)
csrf = json.loads(http(base + '/api/auth/csrf')[1])['csrfToken']
http(
base + '/api/auth/callback/credentials',
data=urllib.parse.urlencode({
'csrfToken': csrf,
'callbackUrl': base + '/graph',
'json': 'true',
**auth_fields,
}).encode(),
headers={'Content-Type': 'application/x-www-form-urlencoded'},
)
session = json.loads(http(base + '/api/auth/session')[1])
conn_id = session['activeConnectionId']
# create graph
http(base + '/api/graph/grand_vision', headers={'X-Connection-Id': conn_id}, method='POST')
# query graph
query = urllib.parse.quote('MATCH (n) RETURN count(n) AS c')
status, body, _ = http(
base + '/api/graph/grand_vision?query=' + query,
headers={'X-Connection-Id': conn_id},
)
print(status)
print(body)MERGE over CREATE for idempotent reruns.sourceId, projectKey, status, and human-readable title.After a direct mutation task, verify at least:
Tell the user:
Do not include:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.