Closed core · open ecosystem

IDENTITY
FOR AGENTS

One agent. One passport. Everywhere it acts.

LIME gives each agent a stable identity — not a shared API key. Services verify a short Core-signed passport locally. MCP Bearer is the primary wire; site login and binding stay separate.

NOT THIS

LIME attests identity. You authorize.

  • ≠ Auth0 / OktaHuman IdP. Agents need machine identity.
  • ≠ API gatewayWe do not proxy your traffic or sit in front of your tools. We are not an API gateway.
  • ≠ MCP hostWe attest who the agent is. We do not run loops or host your tools — not agent hosting.
  • ≠ Web3No chains, no wallets. Ordinary web crypto via JWKS.
0 hopsto LIME on the verify path
~5 mintypical passport lifetime (MCP)
1 identityacross your agent infrastructure
100%local JWKS verification

The Dead End

THE PROBLEM

  • Shared API keys give agents no identity. One leak is fleet-wide blast radius.
  • Human IdP OAuth expects a click. Agents cannot click “Authorize” — wrong for MCP tool servers.
  • Prompt injection that steals a master key burns everyone sharing it.

THE SOLUTION

Without LIME — shared keys

Master key in config. Leak once → unbounded access to every service that trusts it.

With LIME — domain-bound passports

Short passport per domain. Leak → minutes, one audience.

Agent Token → LIMEPassport → ServiceVerify = local JWKS

TWO CREDENTIALS

How Identity is Built

Owner → user_id. Agent → agent_id. Then two different secrets — never fuse them.

  • Owner → user_id
  • Agent → agent_id + public profile
  • Agent Token → LIME only (X-Agent-Token)
  • Passport → short-lived JWT for services
AGENT TOKENX-Agent-Token
LIMEauth only
not the same thing
PASSPORTshort JWT · aud
SERVICEMCP / site / …

Token talks to LIME. Passport talks to the service.

PRIMARY WIRE

MCP Bearer

How an agent presents itself to an MCP server.

1

ISSUE

aud=mcp

Agent authenticates to LIME with Agent Token + domain. Core returns a short-lived passport JWT.

2

PRESENT

Bearer

Agent calls the MCP resource server with Authorization: Bearer <passport>.

3

VERIFY

0 hops

RS verifies via local JWKS / TokenVerifier. Your ACL uses sub = agent_id.

SECONDARY WIRES

Same identity — different actors

Never fuse site login and binding into one blob.

Site loginAgent binding
Who actsAgent + browser on your siteHuman on lime.pics
audlime-site-loginlime-binding
DeliverySSE → site backend?binding_code= → exchange
Agent TokenYes (approve + PoW)No
Site TokenBackend creates requestBackend creates request

Hard Edges

Local Verify

No LIME round-trip on the verify hot path.

Short JWTs

Typical MCP passport TTL ~300s.

Domain Binding

Passports bound to aud / domain.

Key Rotation

JWKS ACTIVE → ROLLOVER → RETIRED.

No Robot Session DB

Verify = signature + claims; ACL is yours.

Revocation

Operator revoke stops new passports.

Proof-of-Work

Anti-spam on site-login approve — not on MCP verify.

MYTHS

Four misconceptions

MYTH

LIME sits in your data path like an API gateway.

TRUTH

No. LIME issues the passport; agent↔service traffic never routes through us. Verify is local JWKS.

MYTH

A passport is just another API key — a JWT with lipstick.

TRUTH

Short-lived and domain-bound. A leak is minutes and one audience — not a fleet master secret. sub is the agent identity.

MYTH

If LIME knows the agent, it also decides what the agent can do.

TRUTH

LIME attests who the agent is. Your service owns ACL — tools, scopes, allowlists.

MYTH

The agent binds itself: paste Site Token into the agent.

TRUTH

Wrong. Binding is human Connect on lime.pics/connect — the signed-in user picks an agent; Site Token stays on the site backend.

Quick compare

FEATURELIMEAPI KEYHUMAN OAUTHAPI GATEWAY
Agent identity
Short-lived credentials
Domain-bound
Local verification
MCP-native Bearer
Proxy required

FAQ

Straight Answers

What does it cost?

Free forever for core agent identity: issuing passports and verifying them locally. Free covers identification — not every future LIME product.

Do you see our databases or tool data?

No. Agent↔service traffic never routes through LIME.

What do you store?

Who the Agent and Operator are, plus passport issue and revoke records. Not your database contents, prompts, or tool payloads.

Is verify really offline from LIME?

Yes on the happy path: the RS checks the JWT against cached JWKS. No call to LIME on each tool call.

Does the Agent Token go to the MCP server?

Never. Agent Token authenticates only to LIME. Services see only the short-lived passport Bearer.

Open or closed?

Closed core · open ecosystem. SDKs and guides are public; the authorization core stays closed.

STATUS

Active MVP

Production-ready SDKs are live. We are onboarding the first cohort of agentic platforms.

WHO INTEGRATES

Use cases

MCP & tool platforms

Give each caller an agent identity instead of one shared master key on the resource server.

Agent runtimes & fleets

One Agent Token per agent to LIME; short-lived passports per hostname. Revoke without rotating a fleet secret.

Multi-agent operations

Separate agent identity from human login. Audit which agent called which service — without LIME in your data path.

SDKs

# pip install lime-agents-sdk
import asyncio, os
from lime_agents import LimeAgent

# Opaque Agent Token only — no keypair
agent = LimeAgent(agent_token=os.environ["LIME_AGENT_TOKEN"])

async def main() -> None:
    tools = await agent.list_tools("https://tools.example.com/mcp")
    print(len(tools))
    await agent.aclose()

asyncio.run(main())

INTEGRATE IN MINUTES

no keypair · Agent Token only to LIME · RS verifies JWKS

Open lime-agents-sdkView All SDKs

Give your agents an identity

One identity. Short passports. Your ACL.

Start Integrating
LIME — Passport system for AI agents