Tools & Connectors
AI Providers
OpenAI, Anthropic, Gemini, Bedrock, Mistral, Cohere, and other AI-provider toolsets.
#AI providers
LLMs, multi-modal models, transcription, image generation, and search
APIs commonly used by agents.
#Agent-ready behavior (overview)
Across this group, only the list / discovery tools were touched for
agent ergonomics; chat / completion / embedding / image / TTS tools are
unchanged (they already return content, not lists). For each listing
tool you get:
- A compact summary array with a stable display ref
(model_ref,file_ref,batch_ref,job_ref,store_ref,voice_ref,prediction_ref,deployment_ref,transcript_ref,project_ref,dataset_ref,kb_ref) safe to
show in final answers. - Raw provider IDs are hidden by default. Pass
include_ids=Trueonly
when a follow-up tool needs them. - Default page size is 20-25 for resource lists (10 for AssemblyAI
transcripts and Bedrock knowledge bases). Search APIs (Tavily, Brave,
SerpAPI) capmax_results/count/numat 10.
Write tools that take an identifier (get_file, delete_file,create_batch, get_batch, cancel_batch, delete_response,get_vector_store, delete_vector_store, cancel_fine_tuning_job,create_fine_tuning_job, get_prediction, cancel_prediction,get_transcript, delete_transcript, lemur_task) accept the dict
returned by the corresponding list / get tool as well as a raw ID
string.
For chat-style models, list_models always keeps the model name asmodel_name because callers need it to invoke the model -- only
internal handles (file/batch/job/store/etc.) are hidden.
#OpenAIToolSet
from maivn_tools import OpenAIToolSet connector = OpenAIToolSet(api_key=secrets["OPENAI_API_KEY"])Tools: chat_completion, responses_create, get_response,delete_response (destructive), create_embedding, list_models,get_model, delete_fine_tuned_model (destructive), generate_image,speech, list_files, get_file, delete_file (destructive),create_batch, list_batches, get_batch, cancel_batch
(destructive), moderate, create_fine_tuning_job,list_fine_tuning_jobs, cancel_fine_tuning_job (destructive),create_vector_store, list_vector_stores, get_vector_store,delete_vector_store (destructive).
Agent-ready behavior
list_models(default limit 20): summary withmodel_ref,model_name,owned_by,created. Setinclude_ids=Truefor rawid.list_files(default limit 20): summary withfile_ref,filename,purpose,bytes,created_at,status. Rawfile-...IDs
hidden; opt in withinclude_ids=True(needed fordelete_file,create_batch,create_fine_tuning_job).list_batches(default limit 20): summary withbatch_ref,endpoint,status,request_counts,created_at. Opt in for rawbatch_id.list_fine_tuning_jobs(default limit 20): summary withjob_ref,model,fine_tuned_model,status,created_at. Opt in for rawjob_id.list_vector_stores(default limit 20): summary withstore_ref,name,file_counts,status,created_at. Opt in for rawstore_id.- Tolerant inputs:
get_file,delete_file,create_batch,get_batch,cancel_batch,get_vector_store,delete_vector_store,cancel_fine_tuning_job, andcreate_fine_tuning_jobaccept the raw ID, the file/batch/job dict
returned by the matching list tool, or the full{"data": [...]}
list payload. - Destructive:
delete_response,delete_fine_tuned_model,delete_file,cancel_batch,cancel_fine_tuning_job,delete_vector_store. Confirm with the user before invoking.
files = connector.list_files() # compact summariesfiles = connector.list_files(include_ids=True) # also include file_idconnector.delete_file(files["files"][0]) # accepts the dict#AnthropicToolSet
from maivn_tools import AnthropicToolSet connector = AnthropicToolSet(api_key=secrets["ANTHROPIC_API_KEY"])Tools: create_message, count_tokens, list_models, get_model,create_message_batch, get_batch, cancel_batch (destructive).
Agent-ready behavior
list_models(default limit 20): summary withmodel_ref,model_name,display_name,created_at.model_nameis kept
because it is also the model identifier callers pass tocreate_message. Setinclude_ids=Trueto also include the rawid.get_batchandcancel_batchaccept a rawmsgbatch_...string or
a batch dict returned bycreate_message_batch/get_batch.- Destructive:
cancel_batch. Confirm before invoking.
models = connector.list_models()batch = connector.create_message_batch(requests=[...])connector.get_batch(batch) # dict accepted#AzureOpenAIToolSet
from maivn_tools import AzureOpenAIToolSet connector = AzureOpenAIToolSet( endpoint="https://my-rsrc.openai.azure.com", api_key=secrets["AZURE_OPENAI_KEY"], api_version="2024-08-01-preview",)Tools: chat_completion(deployment, ...), embeddings(deployment, ...),generate_image(deployment, ...), list_models.
Agent-ready behavior
list_models(default limit 25): summary withmodel_ref,model_name,capabilities,lifecycle_status.model_nameis
kept because it is the deployment identifier callers pass tochat_completion/embeddings/generate_image. Setinclude_ids=Truefor the rawid.
#GeminiToolSet
Google AI Studio / Generative Language API.
from maivn_tools import GeminiToolSet connector = GeminiToolSet(api_key=secrets["GEMINI_API_KEY"])Tools: generate_content, count_tokens, embed_content,list_models, get_model.
Agent-ready behavior
list_models(default limit 25): summary withmodel_ref,model_name,display_name,supported_methods,input_token_limit,output_token_limit.model_nameis the"models/..."resource name callers pass togenerate_content. Setinclude_ids=Truefor the rawname.
#BedrockToolSet
AWS Bedrock Runtime + control plane. Pass a SigV4 AuthStrategy.
from maivn_tools import BedrockToolSet connector = BedrockToolSet(region="us-east-1", auth=sigv4_auth)Tools: list_foundation_models, converse, invoke_model,list_knowledge_bases, retrieve.
Agent-ready behavior
list_foundation_models(default limit 25): summary withmodel_ref,model_name,provider,input_modalities,output_modalities,model_lifecycle.model_nameis themodelIdcallers pass toconverse/invoke_model. Setinclude_ids=Truefor the rawmodel_arn.list_knowledge_bases(default limit 10): summary withkb_ref,knowledge_base_id(kept because callers need it forretrieve),name,description,status,updated_at. Setinclude_ids=Truefor the rawknowledge_base_arn.
#MistralToolSet
from maivn_tools import MistralToolSet connector = MistralToolSet(api_key=secrets["MISTRAL_API_KEY"])Tools: chat_completion, embeddings, fim_completion, list_models.
Agent-ready behavior
list_models(default limit 25): summary withmodel_ref,model_name,owned_by,created.model_nameis kept because it
is also the identifier callers pass tochat_completion. Setinclude_ids=Truefor the rawid.
#CohereToolSet
from maivn_tools import CohereToolSet connector = CohereToolSet(api_key=secrets["COHERE_API_KEY"])Tools: chat, embed, rerank, list_models.
Agent-ready behavior
list_models(default limit 20): summary withmodel_ref,model_name,endpoints,context_length.model_nameis the
identifier callers pass tochat/embed. Setinclude_ids=True
for the rawname.
#HuggingFaceToolSet
from maivn_tools import HuggingFaceToolSet connector = HuggingFaceToolSet(token=secrets["HF_TOKEN"])Tools: list_models, get_model, list_datasets, run_inference,whoami.
Agent-ready behavior
list_models(default limit 25): summary withmodel_ref,model_name(the"author/name"string callers pass torun_inference),pipeline_tag,downloads,likes,last_modified. Setinclude_ids=Truefor the rawid.list_datasets(default limit 25): summary withdataset_ref,dataset_name,tags,downloads,last_modified. Setinclude_ids=Truefor the rawid.
hits = connector.list_models(search="bert", max_results=10)#ReplicateToolSet
from maivn_tools import ReplicateToolSet connector = ReplicateToolSet(api_token=secrets["REPLICATE_TOKEN"])Tools: list_models, get_model, create_prediction,get_prediction, cancel_prediction (destructive), list_predictions,list_deployments, predict_deployment.
Agent-ready behavior
list_models(default limit 25): summary withmodel_ref,model_name("owner/name"),owner,name,description,run_count,visibility. Setinclude_ids=Trueto surfacelatest_version_id(needed for pinned-versioncreate_prediction).list_predictions(default limit 25): summary withprediction_ref,version,status,created_at,completed_at. Raw prediction
IDs hidden; opt in withinclude_ids=True(needed forget_prediction/cancel_prediction).list_deployments(default limit 25): summary withdeployment_ref,owner,name,deployment_path,current_release_version. Opt
in for the rawid.- Tolerant inputs:
get_predictionandcancel_predictionaccept a
raw prediction ID, a prediction dict returned bycreate_prediction/list_predictions, or the{"results": [...]}list payload. - Destructive:
cancel_prediction. Confirm before invoking.
#StabilityToolSet
from maivn_tools import StabilityToolSet connector = StabilityToolSet(api_key=secrets["STABILITY_KEY"])Tools: get_account, get_balance, generate_image, upscale,edit_inpaint.
Agent-ready behavior
- No list tools; the only read tools (
get_account,get_balance)
return small scalar responses already useful as-is.
#ElevenLabsToolSet
from maivn_tools import ElevenLabsToolSet connector = ElevenLabsToolSet(api_key=secrets["ELEVENLABS_KEY"])Tools: text_to_speech, speech_to_text, list_voices, get_voice,list_models, get_user.
Agent-ready behavior
list_voices(default limit 25): summary withvoice_ref,name,voice_id(kept because callers need it fortext_to_speech/get_voice),category,labels,description. Setinclude_ids=Truefor a redundantidfield.list_models(default limit 25): summary withmodel_ref,model_name,name,languages,can_do_text_to_speech,can_use_style. Setinclude_ids=Truefor the rawmodel_id.
#DeepgramToolSet
from maivn_tools import DeepgramToolSet connector = DeepgramToolSet(api_key=secrets["DEEPGRAM_KEY"])Tools: transcribe_url, transcribe_bytes, speak, list_projects.
Agent-ready behavior
list_projects(default limit 25): summary withproject_ref,name,company. Rawproject_idis hidden by default; opt in
withinclude_ids=Truewhen a follow-up Deepgram tool needs the raw
ID.
#AssemblyAIToolSet
from maivn_tools import AssemblyAIToolSet connector = AssemblyAIToolSet(api_key=secrets["ASSEMBLYAI_KEY"])Tools: upload, submit_transcript, get_transcript,list_transcripts, delete_transcript (destructive), lemur_task.
Agent-ready behavior
list_transcripts(default limit 10): summary withtranscript_ref,status,audio_url,created,completed. Raw
transcript IDs hidden; opt in withinclude_ids=True(needed forget_transcript,delete_transcript,lemur_task).- Tolerant inputs:
get_transcript,delete_transcript, andlemur_taskaccept a raw transcript ID, a transcript dict, or the{"transcripts": [...]}list payload.lemur_taskaccepts a list
of any of the above. - Destructive:
delete_transcript. Confirm before invoking.
recent = connector.list_transcripts(include_ids=True)connector.delete_transcript(recent["transcripts"][0])#TavilyToolSet
from maivn_tools import TavilyToolSet connector = TavilyToolSet(api_key=secrets["TAVILY_KEY"])Tools: search, extract, crawl.
Agent-ready behavior
searchis a search API, not a list tool: it returns the raw Tavily
response (results[*]withtitle,url,content) which is
already agent-friendly.max_resultsis capped at 10 (the actual
cap is reported back on the response when the requested value
exceeded the cap).
#BraveSearchToolSet / SerpAPIToolSet
Two web-search providers with similar surfaces:
from maivn_tools import BraveSearchToolSet, SerpAPIToolSet brave = BraveSearchToolSet(api_key=secrets["BRAVE_KEY"])serp = SerpAPIToolSet(api_key=secrets["SERPAPI_KEY"])Each exposes web_search. Brave also has news_search,image_search, video_search and adds suggest. SerpAPI addslocation_search and get_account.
The Bing Web Search API was retired by Microsoft on 2025-08-11 and is
no longer available; the connector was removed. Use Brave/SerpAPI, or
Grounding with Bing Search in the Azure AI Agents Service.
Agent-ready behavior
- All search tools return raw provider responses (Brave
web.results[*], SerpAPIorganic_results[*]) -- the per-hit fields
(title/name,url/link,snippet/description/content) are
already human-readable, so they are kept. count(Brave) andnum(SerpAPI) cap results to keep agent runs
fast; values above each provider's max are clamped.