Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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")

Expand Down
2 changes: 1 addition & 1 deletion src/layerv_qurl/async_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions src/layerv_qurl/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions src/layerv_qurl/langchain.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/layerv_qurl/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down