From f6f14b9291472ba5c4ee65697e952906234215c9 Mon Sep 17 00:00:00 2001 From: Justin Date: Sun, 7 Jun 2026 14:35:25 -0500 Subject: [PATCH] docs: drop "firewall" terminology MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LayerV is not a firewall company; describe qURL's mechanism as granting network access, not opening a firewall. Reword the README, the sync/async client docstrings, the AccessGrant docstring, and the LangChain ResolveQURLTool description to "grant network access" / "network access", matching the qURL MCP server's wording. Docstring/comment/description-only — no behavior, API, or wire changes. Co-Authored-By: Claude Opus 4.8 --- README.md | 4 ++-- src/layerv_qurl/async_client.py | 2 +- src/layerv_qurl/client.py | 4 ++-- src/layerv_qurl/langchain.py | 4 ++-- src/layerv_qurl/types.py | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 6f48578..3cb011a 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Python SDK for the [qURL™ API](https://docs.layerv.ai) — secure, time-limite AI agents need to access APIs, databases, and internal tools — but permanent credentials are a security risk. qURL creates **time-limited, auditable access links** that automatically expire: - **Time-limited** — links expire after minutes, hours, or days -- **IP-scoped** — firewall opens only for the requesting IP via NHP +- **IP-scoped** — access is granted only to the requesting IP via NHP - **Auditable** — every access is logged with who, when, and from where - **Revocable** — kill access instantly if something goes wrong @@ -45,7 +45,7 @@ result = client.create( ) print(result.qurl_link) # Share this link -# Resolve a token (opens firewall for your IP) +# Resolve a token (grants network access for your IP) access = client.resolve("at_k8xqp9h2sj9lx7r4a") print(f"Access granted to {access.target_url} for {access.access_grant.expires_in}s") diff --git a/src/layerv_qurl/async_client.py b/src/layerv_qurl/async_client.py index 7e324a6..4f8147b 100644 --- a/src/layerv_qurl/async_client.py +++ b/src/layerv_qurl/async_client.py @@ -641,7 +641,7 @@ async def resolve( ) -> ResolveOutput: """Resolve a qURL access token (headless). - Triggers an NHP knock to open firewall access for the caller's IP. + Triggers an NHP knock to grant network access for the caller's IP. Requires ``qurl:resolve`` scope on the API key. Args: diff --git a/src/layerv_qurl/client.py b/src/layerv_qurl/client.py index 984a592..0ca046a 100644 --- a/src/layerv_qurl/client.py +++ b/src/layerv_qurl/client.py @@ -140,7 +140,7 @@ class QURLClient: # Create a protected link result = client.create(target_url="https://example.com", expires_in="24h") - # Resolve an access token (opens firewall for your IP) + # Resolve an access token (grants network access for your IP) access = client.resolve("at_k8xqp9h2sj9lx7r4a") # Extend a qURL's expiration @@ -655,7 +655,7 @@ def resolve( ) -> ResolveOutput: """Resolve a qURL access token (headless). - Triggers an NHP knock to open firewall access for the caller's IP. + Triggers an NHP knock to grant network access for the caller's IP. Requires ``qurl:resolve`` scope on the API key. Args: diff --git a/src/layerv_qurl/langchain.py b/src/layerv_qurl/langchain.py index bef6bce..e69a948 100644 --- a/src/layerv_qurl/langchain.py +++ b/src/layerv_qurl/langchain.py @@ -61,11 +61,11 @@ def _run( class ResolveQURLTool(BaseTool): - """Resolve a qURL access token to open firewall access.""" + """Resolve a qURL access token to grant network access.""" name: str = "resolve_qurl" description: str = ( - "Resolve a qURL access token to gain firewall access to the protected resource. " + "Resolve a qURL access token to gain network access to the protected resource. " "Input should be the access token string (e.g. 'at_k8xqp9h2sj9lx7r4a')." ) client: Any = None diff --git a/src/layerv_qurl/types.py b/src/layerv_qurl/types.py index b63338c..25fa8f0 100644 --- a/src/layerv_qurl/types.py +++ b/src/layerv_qurl/types.py @@ -150,7 +150,7 @@ class MintOutput: @dataclass class AccessGrant: - """Details of the firewall access that was granted.""" + """Details of the network access that was granted.""" expires_in: int granted_at: datetime | None = None