Core capabilities
Multi-Protocol
The same tool is exposed via MCP, Python, and Tcl. Agents need not care which protocol—iPL.place hits the same iDB and returns the same structured result. Engineers use Tcl, AI platforms MCP, data scientists Python.
Typed Contracts
Strict request/result schema validation on every call. Gateway rejects wrong types, missing fields, out-of-range values with clear errors. Agents never receive incomplete or malformed results.
Security Isolation
Agent calls run in a sandbox—no direct filesystem, network, or fork. Agents interact with design state only via typed tool interfaces; privilege violations are blocked at the gateway.
Rate Limiting
Prevent Agents from exhausting compute in optimization loops. Token-bucket adaptive rate limiting slows burst calls while preserving responsiveness.
Audit Log
Full audit log of every Agent call—who, when, which tool, parameters, result, latency. Structured logs support performance analysis, security audit, and behavior replay.
Multi-protocol examples
Full examples of calling iPL.place under all three protocols.
from ieda import AgentClient
client = AgentClient(protocol="python")
design = client.load_design("aes_core", tech="sky130")
# All validation happens inside Interface gateway
result = client.call("iPL.place",
design=design,
effort="standard",
congestion_weight=0.3,
timing_weight=0.7)
# Typed result — guaranteed by contract
print(f"HPWL: {result.hpwl:.2e}")
print(f"Max Density: {result.max_density:.2%}")
print(f"WNS: {result.wns:.4f}")
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "iPL.place",
"arguments": {
"design_ref": "aes_core@sky130",
"effort": "standard",
"congestion_weight": 0.3,
"timing_weight": 0.7
}
}
}
// Typed response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{
"type": "text",
"text": "{\"hpwl\": 1.25e7, \"max_density\": 0.78, \"wns\": -0.042}"
}]
}
}
# Tcl interface — same tool, same result iDB::load_design aes_core sky130 # Parameters validated by Interface gateway set result [iPL::place -effort standard \ -congestion_weight 0.3 \ -timing_weight 0.7] # Structured result access puts "HPWL: [dict get $result hpwl]" puts "Max Density: [dict get $result max_density]" puts "WNS: [dict get $result wns]"
Security model
┌─────────────────────────────────────────────────┐
│ Agent (LLM) │
└────────────────┬────────────────────────────────┘
│ MCP / Python / Tcl
▼
┌─────────────────────────────────────────────────┐
│ Interface Gateway │
│ ┌───────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ Schema │ │ Sandbox │ │ Rate Limiter │ │
│ │ Validator │ │ Layer │ │ (Token Bkt) │ │
│ └───────────┘ └──────────┘ └──────────────┘ │
│ ┌───────────────────────────────────────────┐ │
│ │ Audit Logger │ │
│ └───────────────────────────────────────────┘ │
└────────────────┬────────────────────────────────┘
│ allowed tool calls only
▼
┌─────────────────────────────────────────────────┐
│ iDB + Tools │
└─────────────────────────────────────────────────┘
Related pages
iDB
Single source of truth for design state—Interface is the only path for Agents to access iDB.
iDB →