Skip to main content

AgenticOrg Python SDK

AgenticOrg is owned by Orchestrum Technologies LLP. Inventor / Owner: Sanjeev Kumar. Contact sanjeev@orchestrum.in or mishra.sanjeev@gmail.com. See Ownership and contact.

Repository client for selected AgenticOrg HTTP APIs. Method availability and response shape depend on the installed SDK version, configured endpoint, authentication, tenant/company access, grants, and backend deployment. Examples below are integration candidates, not evidence of production availability or a successful provider action.

Version 0.4.0 adds runtime resources, A2A v1 seller access and client.cases. These methods are not available in 0.3.0. Confirm that the reviewed release exists in your package registry before installing it; publication is separate from a repository merge. Matching backend routes, migrations and authorization are still required.

Install

When the package is available from the configured Python package registry:

pip install agenticorg==0.4.0

Pin and review the package version used by your application.

Authentication

Create a client with an API key or delegated grant accepted by the configured endpoint:

from agenticorg import AgenticOrg

client = AgenticOrg(
    api_key="your-key",
    base_url="https://your-reviewed-endpoint.example",
)

Credentials identify a caller; they do not replace tenant/company authorization or tool grants. Keep secrets outside source control.

A delegated grant (grantex_token=) is checked against each route's scope exactly as an API key is: the grant must carry, for example, agents:read to list agents or agents:write (or its alias agents:run) to start a run by agent id. A grant with only tool scopes is refused with 403.

A2A and MCP calls are scope-checked only when the deployment sets AGENTICORG_ROUTE_SCOPE_A2A_MCP=true for the legacy routes. The new A2A v1 send_message route always requires a2a:write (or admin) for generic agent runs. A merchant-issued buyer token is limited to non-binding seller questions and does not grant generic agent execution. Then an API key or grant needs:

Call Route Scope (or agenticorg:admin)
client.agents.run(agent_type, company_id=...) POST /api/v1/a2a/tasks a2a:write
client.mcp.call(tool_name, arguments) POST /api/v1/mcp/call mcp:write; mcp:call is accepted as its alias

API keys created with the default scopes carry mcp:call, so client.mcp.call keeps working, but not a2a:write, so a run by agent type gets 403 until the key is replaced. client.a2a and client.mcp.tools read public discovery routes and need no scope. The new extended_agent_card is private.

A2A v1 seller access (0.4.0)

The tenant admin issues a one-time buyer credential, then hands it to the approved buyer agent using a protected channel. An external agent can run on any platform that sends A2A v1 HTTP+JSON; vendor-specific client enrollment is separate. These SDK methods require the matching server migration and ingress release; they are not included in the 0.3.0 wheel.

from agenticorg import AgenticOrg

admin = AgenticOrg(api_key="tenant-admin-key", base_url="https://your-reviewed-endpoint.example")
approval = admin.a2a.create_buyer_access(
    merchant_id="merchant-123", seller_agent_id="seller-123",
    buyer_agent_id="external-buyer-123", expires_days=7,
)
# Deliver approval["token"] securely. It is returned only once.
buyer = AgenticOrg(api_key=approval["token"], base_url="https://your-reviewed-endpoint.example")
card = buyer.a2a.extended_agent_card()
reply = buyer.a2a.send_message("Is the canvas tote available?")
admin.a2a.revoke_buyer_access(approval["id"])

standard_agent_card() is public; send_message(text, agent_type=..., company_id=...) runs a non-commerce agent only with a tenant credential and explicit a2a:write. See the A2A guide.

Company-scoped shadow candidate

Use an explicit company identifier when creating or generating a candidate. Keep the initial state in shadow until separately reviewed and promoted:

company_id = "00000000-0000-0000-0000-000000000001"

candidate = client.agents.create(
    company_id=company_id,
    name="Invoice review candidate",
    agent_type="invoice_review_candidate",
    domain="finance",
    authorized_tools=[],
    initial_status="shadow",
)

result = client.agents.run(
    candidate["agent_id"],
    action="review_draft",
    inputs={"document_ref": "sample-document"},
    company_id=company_id,  # required when running by agent type
)

print(result.status)
print(result.output)

The direct run uses the stored agent record; the backend must still verify its tenant and company ownership. Do not use a company identifier supplied by untrusted content without an authorized mapping.

SOP draft workflow

SOP parsing produces a draft, not an approved or launchable agent:

draft = client.sop.parse_text(
    "Receive a document, validate required fields, and route exceptions for review.",
    domain_hint="finance",
)

reviewed_config = dict(draft["config"])
reviewed_config["company_id"] = company_id
reviewed_config["initial_status"] = "shadow"

candidate = client.sop.deploy(reviewed_config)
print(candidate["initial_status"])

Before submission, review instructions, data sources, tools, grants, evidence, approval rules, and the target company. Submission does not authorize promotion or external actions.

Discovery resources

Resource Selected methods Boundary
client.agents list, get, run, create, generate Returned records and actions are endpoint-specific.
client.connectors list, get Discovery does not prove provider configuration.
client.sop parse_text, upload, deploy Parsed output requires review; deploy creates a candidate per backend policy.
client.a2a agent_card, agents Public discovery data can differ from authenticated runtime access.
client.mcp tools, call Tool records do not create execution authority.
client.cases submit, list, get, investigate Source-only machine-safe governed-case calls; requires tenant enablement and server-side grants.
client.workflows generation, CRUD, run methods Availability depends on the configured backend.
client.knowledge search, supported types, upload, documents, delete, health, stats Uploads can invoke OCR and indexing; inspect returned status.
client.voice status, config, provider test, runtime health, calls, outbound call Outbound calls are explicit and can incur provider charges.
client.rpa scripts, history, run A selected script can perform external browser actions.
client.bridges register, list, status, route, deregister Routes only to an authorized registered local bridge.
client.commerce seller onboarding, Shopify sync, artifact/cache, buyer ask, adapters, mandate evidence, purchase/POS preparation Purchase and POS helpers prepare handoffs; provider/POS systems remain transaction authorities.

Runtime examples

types = client.knowledge.supported_types()
document = client.knowledge.upload("scanned-invoice.pdf")

products = client.commerce.products(merchant_id="merchant-123")
answer = client.commerce.ask({
    "merchant_id": "merchant-123",
    "question": "Which variants are fresh and in stock?",
})

voice = client.voice.status()
# Runtime health and call history are agent-scoped.
runtime = client.voice.runtime_health("00000000-0000-0000-0000-000000000001")
rpa_catalog = client.rpa.scripts()

place_outbound_call, rpa.run, bridges.route, Shopify sync, and provider verification are intentionally explicit methods. Call them only with reviewed tenant authorization and real external-action intent.

Inspect actual responses and errors instead of relying on illustrative output. Authorization denials should remain denials; do not automatically broaden credentials, scopes, or company context.

Governed cases

Source clients can submit an application for review and start a read-only investigation. Supply the purpose explicitly rather than relying on the API default:

case = client.cases.submit(
    {"legal_name": "Example Ltd", "jurisdiction": "GB"},
    purpose="aml.cdd.onboarding",
)
scheduled = client.cases.investigate(case["case_ref"])
record = client.cases.get(case["case_ref"])

The backend validates the tenant flag, actor, role registration, local purpose allowlist, and delegated tool grant. A 202 response means investigation was scheduled, not that it succeeded; inspect the later case state and failure reason. This SDK intentionally has no decision, withdrawal, screening-review, or information-request approval helper: those actions require a signed-in human, which an API key or agent token does not represent. MCP discovery does not expose the governed-case roles as agent tools. The legacy grantex==0.5.1 does not enforce purpose in the token or per-case caps. See case lifecycle and the tested client contract.

CLI

If the installed distribution provides the CLI, inspect commands with:

agenticorg --help

CLI behavior follows the same endpoint, evidence, authentication, and company boundaries as the Python client.

License

Apache-2.0

Metadata

Release files for agenticorg 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agenticorg 0.4.0
File Size Uploaded
agenticorg-0.4.0.tar.gz 17.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agenticorg 0.4.0
File Interpreter ABI Platform
agenticorg-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 32.8 kB

Release files / agenticorg-0.4.0.tar.gz

Download URL agenticorg-0.4.0.tar.gz
Size 17.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c93a2b798b271f2670913aacfefd477180f2caf5cf68686bdd887535282bda8f
BLAKE2b-256 checksum
How to use checksums
6015196254096f6bf775dc71957c5482dd4eb24bc7ccddd3f3b05bc4af2cc115
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / agenticorg-0.4.0-py3-none-any.whl

Download URL agenticorg-0.4.0-py3-none-any.whl
Size 15.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5555f5b511b352f62cd14249191e3d6d200e59cfcf442640266b8d4902881ed6
BLAKE2b-256 checksum
How to use checksums
a15b363e8e169e493d68baf59235fd8a3d1696c61450a826ba099b0e72a0a4bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page