agent0-sdk 1.5.0b1__py3-none-any.whl → 1.5.1b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agent0_sdk/__init__.py +1 -1
- agent0_sdk/core/feedback_manager.py +75 -78
- agent0_sdk/core/indexer.py +81 -727
- agent0_sdk/core/models.py +6 -8
- agent0_sdk/core/sdk.py +7 -16
- agent0_sdk/core/semantic_search_client.py +10 -6
- {agent0_sdk-1.5.0b1.dist-info → agent0_sdk-1.5.1b1.dist-info}/METADATA +151 -7
- {agent0_sdk-1.5.0b1.dist-info → agent0_sdk-1.5.1b1.dist-info}/RECORD +11 -11
- {agent0_sdk-1.5.0b1.dist-info → agent0_sdk-1.5.1b1.dist-info}/WHEEL +0 -0
- {agent0_sdk-1.5.0b1.dist-info → agent0_sdk-1.5.1b1.dist-info}/licenses/LICENSE +0 -0
- {agent0_sdk-1.5.0b1.dist-info → agent0_sdk-1.5.1b1.dist-info}/top_level.txt +0 -0
agent0_sdk/core/models.py
CHANGED
|
@@ -165,11 +165,6 @@ class AgentSummary:
|
|
|
165
165
|
description: str
|
|
166
166
|
owners: List[Address]
|
|
167
167
|
operators: List[Address]
|
|
168
|
-
# Endpoint strings (new unified search + Jan 2026 schema)
|
|
169
|
-
mcp: Optional[str] = None
|
|
170
|
-
a2a: Optional[str] = None
|
|
171
|
-
web: Optional[str] = None
|
|
172
|
-
email: Optional[str] = None
|
|
173
168
|
ens: Optional[str]
|
|
174
169
|
did: Optional[str]
|
|
175
170
|
walletAddress: Optional[Address]
|
|
@@ -178,9 +173,14 @@ class AgentSummary:
|
|
|
178
173
|
mcpTools: List[str]
|
|
179
174
|
mcpPrompts: List[str]
|
|
180
175
|
mcpResources: List[str]
|
|
176
|
+
active: bool
|
|
177
|
+
# Endpoint strings (new unified search + Jan 2026 schema)
|
|
178
|
+
mcp: Optional[str] = None
|
|
179
|
+
a2a: Optional[str] = None
|
|
180
|
+
web: Optional[str] = None
|
|
181
|
+
email: Optional[str] = None
|
|
181
182
|
oasfSkills: List[str] = field(default_factory=list)
|
|
182
183
|
oasfDomains: List[str] = field(default_factory=list)
|
|
183
|
-
active: bool
|
|
184
184
|
x402support: bool = False
|
|
185
185
|
createdAt: Optional[int] = None
|
|
186
186
|
updatedAt: Optional[int] = None
|
|
@@ -358,8 +358,6 @@ class SearchFilters:
|
|
|
358
358
|
@dataclass
|
|
359
359
|
class SearchOptions:
|
|
360
360
|
sort: Optional[List[str]] = None
|
|
361
|
-
pageSize: Optional[int] = None
|
|
362
|
-
cursor: Optional[str] = None
|
|
363
361
|
semanticMinScore: Optional[float] = None
|
|
364
362
|
semanticTopK: Optional[int] = None
|
|
365
363
|
|
agent0_sdk/core/sdk.py
CHANGED
|
@@ -463,7 +463,7 @@ class SDK:
|
|
|
463
463
|
filters: Union[SearchFilters, Dict[str, Any], None] = None,
|
|
464
464
|
options: Union[SearchOptions, Dict[str, Any], None] = None,
|
|
465
465
|
**kwargs # Accept search criteria as kwargs for better DX
|
|
466
|
-
) ->
|
|
466
|
+
) -> List[AgentSummary]:
|
|
467
467
|
"""Search for agents.
|
|
468
468
|
|
|
469
469
|
Examples:
|
|
@@ -473,9 +473,6 @@ class SDK:
|
|
|
473
473
|
|
|
474
474
|
# Explicit SearchParams (for complex queries or IDE autocomplete)
|
|
475
475
|
sdk.searchAgents(SearchParams(name="Test", mcpTools=["code_generation"]))
|
|
476
|
-
|
|
477
|
-
# With pagination
|
|
478
|
-
sdk.searchAgents(name="Test", page_size=10)
|
|
479
476
|
"""
|
|
480
477
|
# Allow kwargs to populate filters for better DX.
|
|
481
478
|
if kwargs and filters is None:
|
|
@@ -488,19 +485,17 @@ class SDK:
|
|
|
488
485
|
if isinstance(filters.get("feedback"), dict):
|
|
489
486
|
filters["feedback"] = FeedbackFilters(**filters["feedback"])
|
|
490
487
|
filters = SearchFilters(**filters)
|
|
491
|
-
|
|
488
|
+
|
|
492
489
|
if options is None:
|
|
493
490
|
options = SearchOptions()
|
|
494
491
|
elif isinstance(options, dict):
|
|
495
492
|
options = SearchOptions(**options)
|
|
496
493
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
return self.indexer.search_agents(filters, options)
|
|
494
|
+
# Do not force a default sort here; the indexer chooses keyword-aware defaults.
|
|
495
|
+
out = self.indexer.search_agents(filters, options)
|
|
496
|
+
if isinstance(out, dict):
|
|
497
|
+
return out.get("items") or []
|
|
498
|
+
return out or []
|
|
504
499
|
|
|
505
500
|
# Feedback methods are defined later in this class (single authoritative API).
|
|
506
501
|
|
|
@@ -559,8 +554,6 @@ class SDK:
|
|
|
559
554
|
minValue: Optional[float] = None,
|
|
560
555
|
maxValue: Optional[float] = None,
|
|
561
556
|
include_revoked: bool = False,
|
|
562
|
-
first: int = 100,
|
|
563
|
-
skip: int = 0,
|
|
564
557
|
agents: Optional[List["AgentId"]] = None,
|
|
565
558
|
) -> List["Feedback"]:
|
|
566
559
|
"""Search feedback.
|
|
@@ -602,8 +595,6 @@ class SDK:
|
|
|
602
595
|
minValue=minValue,
|
|
603
596
|
maxValue=maxValue,
|
|
604
597
|
include_revoked=include_revoked,
|
|
605
|
-
first=first,
|
|
606
|
-
skip=skip,
|
|
607
598
|
)
|
|
608
599
|
|
|
609
600
|
def revokeFeedback(
|
|
@@ -21,7 +21,7 @@ class SemanticSearchClient:
|
|
|
21
21
|
def __init__(
|
|
22
22
|
self,
|
|
23
23
|
base_url: str = "https://semantic-search.ag0.xyz",
|
|
24
|
-
timeout_seconds: float =
|
|
24
|
+
timeout_seconds: float = 20.0,
|
|
25
25
|
):
|
|
26
26
|
self.base_url = base_url.rstrip("/")
|
|
27
27
|
self.timeout_seconds = timeout_seconds
|
|
@@ -30,11 +30,15 @@ class SemanticSearchClient:
|
|
|
30
30
|
if not query or not query.strip():
|
|
31
31
|
return []
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if
|
|
37
|
-
|
|
33
|
+
# SDK defaults (applied here so developers don't need to pass them).
|
|
34
|
+
# - minScore: 0.5
|
|
35
|
+
# - topK: 5000 (API expects "limit" not "topK" in v1)
|
|
36
|
+
if min_score is None:
|
|
37
|
+
min_score = 0.5
|
|
38
|
+
if top_k is None:
|
|
39
|
+
top_k = 5000
|
|
40
|
+
|
|
41
|
+
body = {"query": query.strip(), "minScore": min_score, "limit": top_k}
|
|
38
42
|
|
|
39
43
|
resp = requests.post(
|
|
40
44
|
f"{self.base_url}/api/v1/search",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent0-sdk
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.1b1
|
|
4
4
|
Summary: Python SDK for agent portability, discovery and trust based on ERC-8004
|
|
5
5
|
Author-email: Agent0 Team <team@ag0.xyz>
|
|
6
6
|
License: MIT License
|
|
@@ -104,10 +104,10 @@ Agent0 SDK enables you to:
|
|
|
104
104
|
pip install agent0-sdk
|
|
105
105
|
```
|
|
106
106
|
|
|
107
|
-
To install the **1.5.
|
|
107
|
+
To install the **1.5.1 pre-release** explicitly:
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
|
-
pip install --pre agent0-sdk==1.5.
|
|
110
|
+
pip install --pre agent0-sdk==1.5.1b1
|
|
111
111
|
```
|
|
112
112
|
|
|
113
113
|
### Install from Source
|
|
@@ -212,10 +212,10 @@ results = sdk.searchAgents(
|
|
|
212
212
|
"x402support": True,
|
|
213
213
|
"feedback": {"minValue": 80, "tag": "enterprise", "includeRevoked": False},
|
|
214
214
|
},
|
|
215
|
-
options={"
|
|
215
|
+
options={"sort": ["updatedAt:desc"]},
|
|
216
216
|
)
|
|
217
217
|
|
|
218
|
-
for agent in results
|
|
218
|
+
for agent in results:
|
|
219
219
|
print(f"{agent.name}: {agent.description}")
|
|
220
220
|
print(f" Tools: {agent.mcpTools}")
|
|
221
221
|
print(f" Skills: {agent.a2aSkills}")
|
|
@@ -365,6 +365,151 @@ The SDK includes complete OASF v0.8.0 taxonomy files:
|
|
|
365
365
|
|
|
366
366
|
Browse these files to find appropriate skill and domain slugs. For more information, see the [OASF specification](https://github.com/agntcy/oasf) and [Release Notes v0.31](RELEASE_NOTES_0.31.md).
|
|
367
367
|
|
|
368
|
+
## Unified Search Reference (Exhaustive)
|
|
369
|
+
|
|
370
|
+
The unified search API is:
|
|
371
|
+
|
|
372
|
+
```python
|
|
373
|
+
results = sdk.searchAgents(filters: dict | SearchFilters | None = None, options: dict | SearchOptions | None = None)
|
|
374
|
+
# results: list[AgentSummary]
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### `FeedbackFilters` (used as `filters["feedback"]`)
|
|
378
|
+
|
|
379
|
+
```python
|
|
380
|
+
@dataclass
|
|
381
|
+
class FeedbackFilters:
|
|
382
|
+
hasFeedback: Optional[bool] = None
|
|
383
|
+
hasNoFeedback: Optional[bool] = None
|
|
384
|
+
includeRevoked: Optional[bool] = None
|
|
385
|
+
minValue: Optional[float] = None
|
|
386
|
+
maxValue: Optional[float] = None
|
|
387
|
+
minCount: Optional[int] = None
|
|
388
|
+
maxCount: Optional[int] = None
|
|
389
|
+
fromReviewers: Optional[List[Address]] = None
|
|
390
|
+
endpoint: Optional[str] = None # substring match
|
|
391
|
+
hasResponse: Optional[bool] = None
|
|
392
|
+
tag1: Optional[str] = None
|
|
393
|
+
tag2: Optional[str] = None
|
|
394
|
+
tag: Optional[str] = None # matches tag1 OR tag2
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
| Field | Semantics |
|
|
398
|
+
| --- | --- |
|
|
399
|
+
| `hasFeedback` / `hasNoFeedback` | Filter by whether the agent has any feedback |
|
|
400
|
+
| `includeRevoked` | Include revoked feedback entries in the pool used for filtering |
|
|
401
|
+
| `minValue` / `maxValue` | Threshold on **average value** over feedback matching the other feedback constraints (inclusive) |
|
|
402
|
+
| `minCount` / `maxCount` | Threshold on **count** over feedback matching the other feedback constraints (inclusive) |
|
|
403
|
+
| `fromReviewers` | Only consider feedback from these reviewer wallets |
|
|
404
|
+
| `endpoint` | Only consider feedback whose `endpoint` contains this substring |
|
|
405
|
+
| `hasResponse` | Only consider feedback that has at least one response (if supported) |
|
|
406
|
+
| `tag1` / `tag2` | Only consider feedback matching tag1/tag2 |
|
|
407
|
+
| `tag` | Shorthand: match either tag1 OR tag2 |
|
|
408
|
+
|
|
409
|
+
### `SearchFilters`
|
|
410
|
+
|
|
411
|
+
```python
|
|
412
|
+
DateLike = Union[datetime, str, int]
|
|
413
|
+
|
|
414
|
+
@dataclass
|
|
415
|
+
class SearchFilters:
|
|
416
|
+
chains: Optional[Union[List[ChainId], Literal["all"]]] = None
|
|
417
|
+
agentIds: Optional[List[AgentId]] = None
|
|
418
|
+
|
|
419
|
+
name: Optional[str] = None
|
|
420
|
+
description: Optional[str] = None
|
|
421
|
+
|
|
422
|
+
owners: Optional[List[Address]] = None
|
|
423
|
+
operators: Optional[List[Address]] = None
|
|
424
|
+
|
|
425
|
+
hasRegistrationFile: Optional[bool] = None
|
|
426
|
+
hasWeb: Optional[bool] = None
|
|
427
|
+
hasMCP: Optional[bool] = None
|
|
428
|
+
hasA2A: Optional[bool] = None
|
|
429
|
+
hasOASF: Optional[bool] = None
|
|
430
|
+
hasEndpoints: Optional[bool] = None
|
|
431
|
+
|
|
432
|
+
webContains: Optional[str] = None
|
|
433
|
+
mcpContains: Optional[str] = None
|
|
434
|
+
a2aContains: Optional[str] = None
|
|
435
|
+
ensContains: Optional[str] = None
|
|
436
|
+
didContains: Optional[str] = None
|
|
437
|
+
|
|
438
|
+
walletAddress: Optional[Address] = None
|
|
439
|
+
|
|
440
|
+
supportedTrust: Optional[List[str]] = None
|
|
441
|
+
a2aSkills: Optional[List[str]] = None
|
|
442
|
+
mcpTools: Optional[List[str]] = None
|
|
443
|
+
mcpPrompts: Optional[List[str]] = None
|
|
444
|
+
mcpResources: Optional[List[str]] = None
|
|
445
|
+
oasfSkills: Optional[List[str]] = None
|
|
446
|
+
oasfDomains: Optional[List[str]] = None
|
|
447
|
+
|
|
448
|
+
active: Optional[bool] = None
|
|
449
|
+
x402support: Optional[bool] = None
|
|
450
|
+
|
|
451
|
+
registeredAtFrom: Optional[DateLike] = None
|
|
452
|
+
registeredAtTo: Optional[DateLike] = None
|
|
453
|
+
updatedAtFrom: Optional[DateLike] = None
|
|
454
|
+
updatedAtTo: Optional[DateLike] = None
|
|
455
|
+
|
|
456
|
+
hasMetadataKey: Optional[str] = None
|
|
457
|
+
metadataValue: Optional[Dict[str, str]] = None # { key, value }
|
|
458
|
+
|
|
459
|
+
keyword: Optional[str] = None
|
|
460
|
+
feedback: Optional[FeedbackFilters] = None
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
### `SearchOptions`
|
|
464
|
+
|
|
465
|
+
```python
|
|
466
|
+
@dataclass
|
|
467
|
+
class SearchOptions:
|
|
468
|
+
sort: Optional[List[str]] = None
|
|
469
|
+
semanticMinScore: Optional[float] = None
|
|
470
|
+
semanticTopK: Optional[int] = None
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
### `AgentSummary` (returned items)
|
|
474
|
+
|
|
475
|
+
```python
|
|
476
|
+
@dataclass
|
|
477
|
+
class AgentSummary:
|
|
478
|
+
chainId: ChainId
|
|
479
|
+
agentId: AgentId
|
|
480
|
+
name: str
|
|
481
|
+
image: Optional[URI]
|
|
482
|
+
description: str
|
|
483
|
+
owners: List[Address]
|
|
484
|
+
operators: List[Address]
|
|
485
|
+
# Endpoint strings (present when advertised; not booleans)
|
|
486
|
+
mcp: Optional[str] = None
|
|
487
|
+
a2a: Optional[str] = None
|
|
488
|
+
web: Optional[str] = None
|
|
489
|
+
email: Optional[str] = None
|
|
490
|
+
ens: Optional[str] = None
|
|
491
|
+
did: Optional[str] = None
|
|
492
|
+
walletAddress: Optional[Address] = None
|
|
493
|
+
supportedTrusts: List[str] = field(default_factory=list)
|
|
494
|
+
a2aSkills: List[str] = field(default_factory=list)
|
|
495
|
+
mcpTools: List[str] = field(default_factory=list)
|
|
496
|
+
mcpPrompts: List[str] = field(default_factory=list)
|
|
497
|
+
mcpResources: List[str] = field(default_factory=list)
|
|
498
|
+
oasfSkills: List[str] = field(default_factory=list)
|
|
499
|
+
oasfDomains: List[str] = field(default_factory=list)
|
|
500
|
+
active: bool = False
|
|
501
|
+
x402support: bool = False
|
|
502
|
+
createdAt: Optional[int] = None
|
|
503
|
+
updatedAt: Optional[int] = None
|
|
504
|
+
lastActivity: Optional[int] = None
|
|
505
|
+
agentURI: Optional[str] = None
|
|
506
|
+
agentURIType: Optional[str] = None
|
|
507
|
+
feedbackCount: Optional[int] = None
|
|
508
|
+
averageValue: Optional[float] = None
|
|
509
|
+
semanticScore: Optional[float] = None
|
|
510
|
+
extras: Dict[str, Any] = field(default_factory=dict)
|
|
511
|
+
```
|
|
512
|
+
|
|
368
513
|
## Use Cases
|
|
369
514
|
|
|
370
515
|
- **Building agent marketplaces** - Create platforms where developers can discover, evaluate, and integrate agents based on their capabilities and reputation
|
|
@@ -374,10 +519,9 @@ Browse these files to find appropriate skill and domain slugs. For more informat
|
|
|
374
519
|
|
|
375
520
|
## 🚀 Coming Soon
|
|
376
521
|
|
|
377
|
-
- More chains (currently Ethereum
|
|
522
|
+
- More chains (currently Ethereum Mainnet + Ethereum Sepolia + Polygon Mainnet)
|
|
378
523
|
- Support for validations
|
|
379
524
|
- Enhanced x402 payments
|
|
380
|
-
- Semantic/Vectorial search
|
|
381
525
|
- Advanced reputation aggregation
|
|
382
526
|
- Import/Export to centralized catalogues
|
|
383
527
|
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
agent0_sdk/__init__.py,sha256=
|
|
1
|
+
agent0_sdk/__init__.py,sha256=l-IYzlB87rfM6Rigthoasgc80HmQ-BHHbJENZU6St6I,1190
|
|
2
2
|
agent0_sdk/core/agent.py,sha256=P3AX7zm4G5qkWdTJcjOvR69cCyOovHefbRoKejj6QKY,48062
|
|
3
3
|
agent0_sdk/core/contracts.py,sha256=EVxtxc5z6hI7p40Va5ibu0Pssmi6Y6UEG1_wfO7TZ_U,22942
|
|
4
4
|
agent0_sdk/core/endpoint_crawler.py,sha256=QBkFc3tBSQqHj6PtSTZ5D3_HVB00KJZJdxE3uYpI9po,13611
|
|
5
|
-
agent0_sdk/core/feedback_manager.py,sha256=
|
|
6
|
-
agent0_sdk/core/indexer.py,sha256=
|
|
5
|
+
agent0_sdk/core/feedback_manager.py,sha256=rgQSxjNlEtBLN_bzQ1rnPL2kuaHCHM5vIEyw7Uitg3Q,42696
|
|
6
|
+
agent0_sdk/core/indexer.py,sha256=apXiAA-kYEcRMv6s8NgiguwinPs3cKihLZ4B8jqaPAE,75122
|
|
7
7
|
agent0_sdk/core/ipfs_client.py,sha256=17XXMpJgLWhcNUSkmduAZt409c8oJXlj9C_eTGVk-Io,14185
|
|
8
|
-
agent0_sdk/core/models.py,sha256=
|
|
8
|
+
agent0_sdk/core/models.py,sha256=xZc93KKzsgc1cm0yymN2lFaMFv6MuaUNS9tcxT6Lktg,14383
|
|
9
9
|
agent0_sdk/core/oasf_validator.py,sha256=ZOtYYzQd7cJj3eJegi7Ch5ydoapJEjaJSxMvwzKSp5o,2980
|
|
10
|
-
agent0_sdk/core/sdk.py,sha256=
|
|
11
|
-
agent0_sdk/core/semantic_search_client.py,sha256=
|
|
10
|
+
agent0_sdk/core/sdk.py,sha256=TKagv6AufrCWFmfOa79yODa6--PP4tt5G8UCXWS59N0,27484
|
|
11
|
+
agent0_sdk/core/semantic_search_client.py,sha256=MrWMKmZ6qQhqKiIDiS2W5Aop4ak-YQ9VastIVlVzL0c,2013
|
|
12
12
|
agent0_sdk/core/subgraph_client.py,sha256=VBHSdMKIr-DLRKu0bGQMBC_fdxI8SgNMqVLpPWYuQc0,27374
|
|
13
13
|
agent0_sdk/core/transaction_handle.py,sha256=tKo6ny02m3eIeDGo0Wjikf-yUtl_8KYJy5YxFkPvyHo,1958
|
|
14
14
|
agent0_sdk/core/value_encoding.py,sha256=NQUUvjTRAr5Tqj8t4HUGlfhak8VDmB8E5WMlfAqJwVk,3311
|
|
15
15
|
agent0_sdk/core/web3_client.py,sha256=9w5ZgHILteCHSOisae3QluwuIsX3OD-VkoAc01koQWA,13786
|
|
16
16
|
agent0_sdk/taxonomies/all_domains.json,sha256=buM8_6mpY8_AMbBIPzM-gtu14Tl30QDmhuQxxrlJU4c,74625
|
|
17
17
|
agent0_sdk/taxonomies/all_skills.json,sha256=WVsutw3fqoj1jfDPru3CyWTr1kc1a5-EhBOWPfXnEi8,47483
|
|
18
|
-
agent0_sdk-1.5.
|
|
19
|
-
agent0_sdk-1.5.
|
|
20
|
-
agent0_sdk-1.5.
|
|
21
|
-
agent0_sdk-1.5.
|
|
22
|
-
agent0_sdk-1.5.
|
|
18
|
+
agent0_sdk-1.5.1b1.dist-info/licenses/LICENSE,sha256=rhZZbZm_Ovz4Oa9LNQ-ms8a1tA36wWh90ZkC0OR7WMw,1072
|
|
19
|
+
agent0_sdk-1.5.1b1.dist-info/METADATA,sha256=srsv0FCyL6LWGo3zldnLEHVH-CQAXQ7lnAqSnRoIc_k,20216
|
|
20
|
+
agent0_sdk-1.5.1b1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
21
|
+
agent0_sdk-1.5.1b1.dist-info/top_level.txt,sha256=p4520WUKNfhU0lVWJgkrB_jdeUfvHSY3K18k4oYLNfI,11
|
|
22
|
+
agent0_sdk-1.5.1b1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|